❶ access資料庫中一個表最多能定義多少個欄位
ACCESS資料庫中一個表最多可以定義255個欄位。它是由ACCESS規格所限制的。
另外定義Microsoft Access欄位時其欄位名稱應遵守如下規定:
1)長度最多隻能為 64 個字元。
2)可以包含字母、數字、空格及特殊的字元(除句號 (.)、感嘆號 (!)、重音符號 (`) 和方括弧 ([ ]) 之外)的任意組合。
3)不能以先導空格開頭。
4)不能包含控制字元(從 0 到 31 的 ASCII 值)。
下圖是ACCESS聯機幫助中有關表規格的說明截圖,供參考
❷ sap表欄位最多有幾個
sap表欄位最多有幾個,
SAP ABAP 表欄位是資料庫表結構的組成部分,描述了數肢飢據庫表欄位的名稱、數據類型和任何語義屬性。
表欄位是表的結構化數據類型的組成部分,相關規則適用於組成部分名稱和組成部分類型,具有以下限制:
(1) 表欄位名不能遲頌為保留名。 不能使用的保留名稱在資料庫表 TRESE 中。 這在使用包含結構(Include Structure)時也很重要。
(2) 表欄位始終具有一種基本數據類型。引用類型、子結構和表類型是不可能的。也就是說引用類型,子結構和表類型不能出現在 Data element 和 Data Type 這兩列下面,如下圖所示:
基本數據類型直接為表欄位指定或使用數據元素指定,並且始終基於 ABAP 字典中的預定義類型。表欄位在物理資料庫表中具有特定於平台的類型。
對於每個平台,ABAP 字典中的基本類型與特定於平台的類型之間存在映射。 如果僅使用 Open SQL,則此映射對 ABAP 程序員是透明的,並且只有 ABAP 字典中的預定義類型及其 ABAP 類型與 ABAP 程序相關。
(3) 一個表最多可以有 749 個欄位。 所有欄位長度的總和限制為 4030 位元組。 對碼飢鄭於 STRING、RAWSTRING、LRAW 和 LCHR 等深層欄位,只計算引用而不計算實際內容。
CHAR 類型的欄位最多可以包含 1333 個字元。
(4) 任何具有 LRAW 或 LCHR 類型的欄位都必須位於表的末尾,並且每個表中只允許一個這種類型的欄位。
注意:除了透明表之外,還有一個特定於 SAP 的資料庫表類別可以在 ABAP 詞典中定義, 即 Pool tables 和 Cluster tables. 二者可以通過 Open SQL 訪問,就像訪問透明表一樣。資料庫介面將訪問轉換為對二者的相關訪問。 但是,某些限制適用,這些限制也在相關聲明中指定。無法使用 native SQL 直接訪問 Pool tables 和 Cluster tables.
❸ Oracle資料庫表的欄位個數有限制嗎
SQLserver能創建的元素上限數如下:
用戶資料庫最多32767個,文件銷鋒組最多256個/庫,春拿文件最多32767/庫,欄位(列)1024個/虧森晌表。
所以,欄位個數上限為1024.
❹ SQL資料庫最多可以設計多少個欄位
1.每個基礎數據表的列數最多 1,024
2.40個不算多
3.欄位太多效率肯定是有問題,並且也不方便管理、維護和調試
❺ mysql表欄位長度調整注意事項
mysql創建表欄位長度范圍_Mysql的建表規范與注意事項⼀、 表設計規范
庫名、表名、欄位名必須使⽤⼩寫字母,「_」分割。
庫名、表名、欄位名必須不超過12個字元。
庫名、表名、欄位名見名知意,建議使⽤名詞⽽不是動詞。
建議使⽤InnoDB存儲引擎飢悄。
存儲精確浮點數必須使⽤DECIMAL替代FLOAT和DOUBLE。
建議使⽤UNSIGNED存儲⾮負數值。
建議使⽤INT UNSIGNED存儲IPV4。
整形定義中不添加長度,⽐如使⽤INT,⽽不是INT(4)。
使⽤短數據類型,⽐如取值范圍為0-80時,使⽤TINYINT UNSIGNED。
不建議使⽤ENUM類型,使⽤TINYINT來代替。
盡可能不使⽤TEXT、BLOB類型。
VARCHAR(N),N表⽰的是字元數不是位元組數,⽐如VARCHAR(255),可以最⼤可存儲255個漢字,需要根據實際的寬度來選擇N。
VARCHAR(N),N盡可能⼩,因為MySQL⼀個表中所有的VARCHAR欄位最⼤長度是65535個位元組,進⾏排巧梁序和創建臨時表⼀類的內存操作時,會使⽤N的長度申請內存。
表字元集選擇UTF8。
使⽤VARBINARY存儲變長字元串。
存儲年使⽤YEAR類型。
存儲⽇期使⽤DATE類型。
存儲時間(精確到秒)建議使⽤TIMESTAMP類型,因為TIMESTAMP使⽤4位元組,DATETIME使⽤8個位元組。
建議欄位定義為NOT NULL。
將過⼤欄位拆分到其他表中。
禁⽌在資料庫中使⽤VARBINARY、BLOB存儲圖⽚、⽂件等。
表結構變更需要通知DBA審核。
⼆、 索引規范
⾮唯⼀索引必須按照「idx_欄位名稱_欄位名稱[_欄位名]」進⾏命名。
唯⼀索引必須按照「uniq_欄位名稱_欄位名稱[_欄位名]」進⾏命名。
索引名稱必須使⽤⼩寫。
索引中的欄位數建議不超過5個。
單張表的索引數量控制在5個以內。
唯⼀鍵由3個以下欄位組成,並且欄位都是整形時,使⽤唯⼀鍵作為主鍵。
沒有唯⼀鍵或者唯⼀鍵不符合5中的條件時,使⽤⾃增(或者通過發號器獲取)id作為主鍵。
唯⼀鍵不和主鍵重復。
索引欄位的順序需要考慮欄位值去重之後的個數,個數多的放在前⾯。
ORDER BY,GROUP BY,DISTINCT的欄位需要添加在索引的後⾯。
使⽤EXPLAIN判斷SQL語句是否合理使⽤索引,盡量避免extra列出現:Using File Sort,UsingTemporary。
UPDATE、DELETE語句需要根據WHERE條件添加索引。
不建議使⽤%前綴模糊查詢,例如LIKE 「%weibo」。
對長度過長的VARCHAR欄位建⽴索引時,添加crc32或者MD5 Hash欄位,爛寬渣對Hash欄位建⽴索引。
合理創建聯合索引(避免冗餘),(a,b,c) 相當於 (a) 、(a,b) 、(a,b,c)。
合理利⽤覆蓋索引。
SQL變更需要確認索引是否需要變更並通知DBA。
三、 SQL語句規范
使⽤prepared statement,可以提供性能並且避免SQL注⼊。
SQL語句中IN包含的值不應過多。
UPDATE、DELETE語句不使⽤LIMIT。
WHERE條件中必須使⽤合適的類型,避免MySQL進⾏隱式類型轉化。
SELECT語句只獲取需要的欄位。
SELECT、INSERT語句必須顯式的指明欄位名稱,不使⽤SELECT *,不使⽤INSERTINTO table()。
使 ⽤SELECT column_name1, column_name2 FROM table WHERE[condition]⽽不是SELECT column_name1 FROM table WHERE[condition]和SELECT column_name2 FROM table WHERE [condition]。
WHERE條件中的⾮等值條件(IN、BETWEEN、、>=)會導致後⾯的條件使⽤不了索引。
避免在SQL語句進⾏數學運算或者函數運算,容易將業務邏輯和DB耦合在⼀起。
INSERT語句使⽤batch提交(INSERT INTO tableVALUES(),(),()……),values的個數不應過多。
避免使⽤存儲過程、觸發器、函數等,容易將業務邏輯和DB耦合在⼀起,並且MySQL的存儲過程、觸發器、函數中存在⼀定的bug。
避免使⽤JOIN。
使⽤合理的SQL語句減少與資料庫的交互次數。
不使⽤ORDER BY RAND(),使⽤其他⽅法替換。
建議使⽤合理的分頁⽅式以提⾼分頁的效率。
統計表中記錄數時使⽤COUNT(*),⽽不是COUNT(primary_key)和COUNT(1)。
禁⽌在從庫上執⾏後台管理和統計類型功能的QUERY。
四、 散表規范
每張表數據量建議控制在5000w以下。
可以結合使⽤hash、range、lookup table進⾏散表。
散表如果使⽤md5(或者類似的hash演算法)進⾏散表,表名後綴使⽤16進制,⽐如user_ff。
推薦使⽤CRC32求余(或者類似的算術演算法)進⾏散表,表名後綴使⽤數字,數字必須從0開始並等寬,⽐如散100張表,後綴從00-99。
使⽤時間散表,表名後綴必須使⽤特定格式,⽐如按⽇散表user_20110209、按⽉散表user_201102。
五、 其他
批量導⼊、導出數據需要DBA進⾏審查,並在執⾏過程中觀察服務。
批量更新數據,如update,delete 操作,需要DBA進⾏審查,並在執⾏過程中觀察服務。
產品出現⾮資料庫平台運維導致的問題和故障時,如前端被抓站,請及時通知DBA,便於維護服務穩定。
業務部門程序出現bug等影響資料庫服務的問題,請及時通知DBA,便於維護服務穩定。
業務部門推⼴活動,請提前通知DBA進⾏服務和訪問評估。
如果出現業務部門⼈為誤操作導致數據丟失,需要恢復數據,請在第⼀時間通知DBA,並提供准確時間,誤操作語句等重要線索。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
FAQ
1-1.庫名、表名、欄位名必須使⽤⼩寫字母,「_」分割。
a)MySQL有配置參數lower_case_table_names,不可動態更改,Linux系統默認為0,即庫表名以實際情況存儲,⼤⼩寫敏感。如果是1,以⼩寫存儲,⼤⼩寫不敏感。如果是2,以實際情況存儲,但以⼩寫⽐較。
b) 如果⼤⼩寫混合⽤,可能存在abc,Abc,ABC等多個表共存,容易導致混亂。
c) 欄位名顯⽰區分⼤⼩寫,但實際使⽤不區分,即不可以建⽴兩個名字⼀樣但⼤⼩寫不⼀樣的欄位。
d) 為了統⼀規范, 庫名、表名、欄位名使⽤⼩寫字母。
1-2.庫名、表名、欄位名必須不超過12個字元。
庫名、表名、欄位名⽀持最多64個字元,但為了統⼀規范、易於辨識以及減少傳輸量,必須不超過12字元。
1-3.庫名、表名、欄位名見名知意,建議使⽤名詞⽽不是動詞。
a) ⽤戶評論可⽤表名usercomment或者comment。
b) 庫表是⼀種客觀存在的事物,⼀種對象,所以建議使⽤名詞。
1-4.建議使⽤InnoDB存儲引擎。
a) 5.5以後的默認引擘,⽀持事務,⾏級鎖,更好的恢復性,⾼並發下性能更好,對多核,⼤內存,ssd等硬體⽀持更好。
b) 具體⽐較可見附件的官⽅⽩⽪書。
1-5.存儲精確浮點數必須使⽤DECIMAL替代FLOAT和DOUBLE。
a) mysql中的數值類型(不包括整型):
IEEE754浮點數:float (單精度) , double 或real (雙精度)
定點數: decimal或 numeric
單精度浮點數的有效數字⼆進制是24位,按⼗進制來說,是8位;雙精度浮點數的有效數字⼆進制是53位,按⼗進制來說,是16 位
⼀個實數的有效數字超過8位,⽤單精度浮點數來表⽰的話,就會產⽣誤差!同樣,如果⼀個實數的有效數字超過16位,⽤雙精度浮點數來表⽰,也會產⽣誤差
b)IEEE754標準的計算機浮點數,在內部是⽤⼆進製表⽰的,但在將⼀個⼗進制數轉換為⼆進制浮點數時,也會造成誤差,原因是不是所有的數都能轉換成有限長度的⼆進制數。
即⼀個⼆進制可以准確轉換成⼗進制,但⼀個帶⼩數的⼗進制不⼀定能夠准確地⽤⼆進制來表⽰。
實例:
drop table if exists t;
create table t(value float(10,2));
insert into t values(131072.67),(131072.68);
select value from t;
+-----------+
|value |
+-----------+
| 131072.67 |
| 131072.69 |
+-----------+
1-6.建議使⽤UNSIGNED存儲⾮負數值。
同樣的位元組數,存儲的數值范圍更⼤。如tinyint 有符號為 -128-127,⽆符號為0-255
1-7. 如何使⽤INT UNSIGNED存儲ip?
使⽤INTUNSIGNED⽽不是char(15)來存儲ipv4地址,通過MySQL函數inet_ntoa和inet_aton來進⾏轉化。Ipv6地址⽬前沒有轉化函數,需要使⽤DECIMAL或者兩個bigINT來存儲。例如:
SELECT INET_ATON('209.207.224.40');
3520061480
SELECT INET_NTOA(3520061480);
209.207.224.40
1-8. INT[M],M值代表什麼含義?
注意數值類型括弧後⾯的數字只是表⽰寬度⽽跟存儲范圍沒有關系,⽐如INT(3)默認顯⽰3位,空格補齊,超出時正常顯⽰,Python、Java客戶端等不具備這個功能。
1-10.不建議使⽤ENUM、SET類型,使⽤TINYINT來代替。
a)ENUM,有三個問題:添加新的值要做DDL,默認值問題(將⼀個⾮法值插⼊ENUM(也就是說,允許的值列之外的字元串),將插⼊空字元串以作為特殊錯誤值),索引值問題(插⼊數字實際是插⼊索引對應的值)
實例:
drop table if exists t;
create table t(sex enum('0','1'));
insert into t values(1);
insert into t values('3');
select * from t;
+------+
| sex |
+------+
| 0 |
| |
+------+
2 rows in set (0.00 sec)
1-11.盡可能不使⽤TEXT、BLOB類型。
a) 索引排序問題,只能使⽤max_sort_length的長度或者⼿⼯指定ORDER BY SUBSTRING(column,length)的長度來排序
b) Memory引擘不⽀持text,blog類型,會在磁碟上⽣成臨時表
c) 可能浪費更多的空間
d) 可能⽆法使⽤adaptive hash index
e) 導致使⽤where沒有索引的語句變慢
1-13. VARCHAR中會產⽣額外存儲嗎?
VARCHAR(M),如果M<256時會使⽤⼀個位元組來存儲長度,如果M>=256則使⽤兩個位元組來存儲長度。
1-14.表字元集選擇UTF8。
a) 使⽤utf8字元集,如果是漢字,佔3個位元組,但ASCII碼字元還是1個位元組。
b) 統⼀,不會有轉換產⽣亂碼風險
c) 其他地區的⽤戶(美國、印度、台灣)⽆需安裝簡體中⽂⽀持,就能正常看您的⽂字,並且不會出現亂碼
d)ISO-8859-1編碼(latin1)使⽤了單位元組內的所有空間,在⽀持ISO-8859-1的系統中傳輸和存儲其他任何編碼的位元組流都不會被拋棄。即把其他任何編碼的位元組流當作ISO-8859-1編碼看待都沒有問題,保存的是原封不動的位元組流。
1-15.使⽤VARBINARY存儲變長字元串。
⼆進制位元組流,不存在編碼問題
1-18. 為什麼建議使⽤TIMESTAMP來存儲時間⽽不是DATETIME?
DATETIME和TIMESTAMP都是精確到秒,優先選擇TIMESTAMP,因為TIMESTAMP只有4個位元組,⽽DATETIME8個位元組。同時TIMESTAMP具有⾃動賦值以及⾃動更新的特性。
如何使⽤TIMESTAMP的⾃動賦值屬性?
a) 將當前時間作為ts的默認值:ts TIMESTAMP DEFAULTCURRENT_TIMESTAMP。
b) 當⾏更新時,更新ts的值:ts TIMESTAMP DEFAULT 0 ONUPDATE CURRENT_TIMESTAMP。
c) 可以將1和2結合起來:ts TIMESTAMP DEFAULTCURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP。
1-19.建議欄位定義為NOT NULL。
a)如果null欄位被索引,需要額外的1位元組
b)使索引,索引統計,值的⽐較變得更復雜
c)可⽤0,''代替
d)如果是索引欄位,⼀定要定義為not null
1-21.禁⽌在資料庫中使⽤VARBINARY、BLOB存儲圖⽚、⽂件等。
采⽤分布式⽂件系統更⾼效
2. 為什麼MySQL的性能依賴於索引?
MySQL的查詢速度依賴良好的索引設計,因此索引對於⾼性能⾄關重要。合理的索引會加快查詢速度(包括UPDATE和DELETE的速
度,MySQL會將包含該⾏的page載入到內存中,然後進⾏UPDATE或者DELETE操作),不合理的索引會降低速度。
MySQL索引查找類似於新華字典的拼⾳和部⾸查找,當拼⾳和部⾸索引不存在時,只能通過⼀頁⼀頁的翻頁來查找。當MySQL查詢不能使⽤索引時,MySQL會進⾏全表掃描,會消耗⼤量的IO。
2-5. 為什麼⼀張表中不能存在過多的索引?
InnoDB的secondaryindex使⽤b+tree來存儲,因此在UPDATE、DELETE、INSERT的時候需要對b+tree進⾏調整,過多的索引會減慢更新的速度。
2-11. EXPLAIN語句
EXPLAIN語句(在MySQL客戶端中執⾏)可以獲得MySQL如何執⾏SELECT語句的信息。通過對SELECT語句執⾏EXPLAIN,可以知曉MySQL執⾏該SELECT語句時是否使⽤了索引、全表掃描、臨時表、排序等信息。盡量避免MySQL進⾏全表掃描、使⽤臨時表、排序等。詳見官⽅⽂檔。
2-13.不建議使⽤%前綴模糊查詢,例如LIKE 「%weibo」。
會導致全表掃描
2-14. 如何對長度⼤於50的VARCHAR欄位建⽴索引?
下⾯的表增加⼀列url_crc32,然後對url_crc32建⽴索引,減少索引欄位的長度,提⾼效率。
CREATE TABLE url(
……
url VARCHAR(255) NOT NULL DEFAULT 0,
url_crc32INT UNSIGNED NOT NULL DEFAULT 0,
……
index idx_url(url_crc32)
);
2-16. 什麼是覆蓋索引?
InnoDB 存儲引擎中,secondaryindex(⾮主鍵索引)中沒有直接存儲⾏地址,存儲主鍵值。如果⽤戶需要查詢secondaryindex中所不包含的數據列時,需要先通過secondaryindex查找到主鍵值,然後再通過主鍵查詢到其他數據列,因此需要查詢兩次。
覆蓋索引的概念就是查詢可以通過在⼀個索引中完成,覆蓋索引效率會⽐較⾼,主鍵查詢是天然的覆蓋索引。
合理的創建索引以及合理的使⽤查詢語句,當使⽤到覆蓋索引時可以獲得性能提升。
⽐如SELECT email,uid FROM user_email WHEREuid=xx,如果uid不是主鍵,適當時候可以將索引添加為index(uid,email),以獲得性能提升。
3-3.UPDATE、DELETE語句不使⽤LIMIT。
a) 可能導致主從數據不⼀致
b) 會記錄到錯誤⽇志,導致⽇志占⽤⼤量空間
3-4. 為什麼需要避免MySQL進⾏隱式類型轉化?
因為MySQL進⾏隱式類型轉化之後,可能會將索引欄位類型轉化成=號右邊值的類型,導致使⽤不到索引,原因和避免在索引欄位中使⽤函數是類似的。
3-6. 為什麼不建議使⽤SELECT *?
增加很多不必要的消耗(cpu、io、內存、⽹絡帶寬);增加了使⽤覆蓋索引的可能性;當表結構發⽣改變時,前段也需要更新。
3-13. 如何減少與資料庫的交互次數?
使⽤下⾯的語句來減少和db的交互次數:
INSERT ... ON DUPLICATE KEY UPDATE
REPLACE
INSERT IGNORE
INSERT INTO values(),()如何結合使⽤多個緯度進⾏散表散庫?
例如微博message,先按照crc32(message_id)將message散到16個庫中,然後針對每個庫中的表,⼀天⽣成⼀張新表。
3-14. 為什麼不能使⽤ORDER BY rand()?
因為ORDER BYrand()會將數據從磁碟中讀取,進⾏排序,會消耗⼤量的IO和CPU,可以在程序中獲取⼀個rand值,然後通過在從資料庫中獲取對應的值。
3-15. MySQL中如何進⾏分頁?
假如有類似下⾯分頁語句:
SELECT * FROM table ORDER BY TIME DESC LIMIT 10000,10;
這種分頁⽅式會導致⼤量的io,因為MySQL使⽤的是提前讀取策略。
推薦分頁⽅式:
SELECT * FROM table WHERE TIME
SELECT * FROM tableinner JOIN(SELECT id FROM table ORDER BY TIME LIMIT 10000,10) as t USING(id)
3-17.為什麼避免使⽤復雜的SQL?
拒絕使⽤復雜的SQL,將⼤的SQL拆分成多條簡單SQL分步執⾏。原因:簡單的SQL容易使⽤到MySQL的querycache;減少鎖表時間特別是MyISAM;可以使⽤多核cpu。
2. InnoDB存儲引擎為什麼避免使⽤COUNT(*)?
InnoDB表避免使⽤COUNT(*)操作,計數統計實時要求較強可以使⽤memcache或者Redis,⾮實時統計可以使⽤單獨統計表,定時更新。
¥
5
網路文庫VIP限時優惠現在開通,立享6億+VIP內容
立即獲取
mysql創建表欄位長度范圍_Mysql的建表規范與注意事項
mysql創建表欄位長度范圍_Mysql的建表規范與注意事項⼀、 表設計規范
庫名、表名、欄位名必須使⽤⼩寫字母,「_」分割。
庫名、表名、欄位名必須不超過12個字元。
庫名、表名、欄位名見名知意,建議使⽤名詞⽽不是動詞。
建議使⽤InnoDB存儲引擎。
存儲精確浮點數必須使⽤DECIMAL替代FLOAT和DOUBLE。
建議使⽤UNSIGNED存儲⾮負數值。
建議使⽤INT UNSIGNED存儲IPV4。
第 1 頁
整形定義中不添加長度,⽐如使⽤INT,⽽不是INT(4)。
使⽤短數據類型,⽐如取值范圍為0-80時,使⽤TINYINT UNSIGNED。
不建議使⽤ENUM類型,使⽤TINYINT來代替。
盡可能不使⽤TEXT、BLOB類型。
VARCHAR(N),N表⽰的是字元數不是位元組數,⽐如VARCHAR(255),可以最⼤可存儲255個漢字,需要根據實際的寬度來選擇N。
VARCHAR(N),N盡可能⼩,因為MySQL⼀個表中所有的VARCHAR欄位最⼤長度是65535個位元組,進⾏排序和創建臨時表⼀類的內存操作時,會使⽤N的長度申請內存。
第 2 頁
表字元集選擇UTF8。
使⽤VARBINARY存儲變長字元串。
存儲年使⽤YEAR類型。
存儲⽇期使⽤DATE類型。
存儲時間(精確到秒)建議使⽤TIMESTAMP類型,因為TIMESTAMP使⽤4位元組,DATETIME使⽤8個位元組。
建議欄位定義為NOT NULL。
將過⼤欄位拆分到其他表中。
禁⽌在資料庫中使⽤VARBINARY、BLOB存儲圖⽚、⽂件等。
表結構變更需要通知DBA審核。
第 3 頁
⼆、 索引規范
⾮唯⼀索引必須按照「idx_欄位名稱_欄位名稱[_欄位名]」進⾏命名。
唯⼀索引必須按照「uniq_欄位名稱_欄位名稱[_欄位名]」進⾏命名。
索引名稱必須使⽤⼩寫。
索引中的欄位數建議不超過5個。
單張表的索引數量控制在5個以內。
唯⼀鍵由3個以下欄位組成,並且欄位都是整形時,使⽤唯⼀鍵作為主鍵。
沒有唯⼀鍵或者唯⼀鍵不符合5中的條件時,使⽤⾃增(或者通過發號器獲取)id作為主鍵。
第 4 頁
唯⼀鍵不和主鍵重復。
索引欄位的順序需要考慮欄位值去重之後的個數,個數多的放在前⾯。
ORDER BY,GROUP BY,DISTINCT的欄位需要添加在索引的後⾯。
使⽤EXPLAIN判斷SQL語句是否合理使⽤索引,盡量避免extra列出現:Using File Sort,UsingTemporary。
UPDATE、DELETE語句需要根據WHERE條件添加索引。
不建議使⽤%前綴模糊查詢,例如LIKE 「%weibo」。
對長度過長的VARCHAR欄位建⽴索引時,添加crc32或者MD5 Hash欄位,對Hash欄位建⽴索引。