資料庫索引規約

2021-10-08 21:40:38 字數 1010 閱讀 4075

本文學習自阿里巴巴編碼規範,只作為學習筆記,如需詳細了解請自行檢視阿里編碼規範

1.業務上具有唯一特性的字段,哪怕是多個欄位的組合,也必須要建成唯一索引。

2.需要join的字段,資料型別必須絕對一致,多表關聯查詢時,保證被關聯到的表需要有索引。

即使雙表 join 也要注意表索引、sql 效能

3.在varchar欄位上建索引時,必須設定索引的長度,根據實際文字區分度解決實際索引長度。

測試合適索引的長度

計算公式是:count(distinct left(c_address,20))/count(*)

當前字串出現的數量/總量的乙個比例,比例在95%左右最合適的。

4.頁面搜尋嚴禁左模糊或者全模糊,如果需要請走搜尋引擎來解決

索引檔案具有 b-tree 的最左字首匹配特性,如果左邊的值未確定,那麼無法使用此索引。

5.如果有 order by 的場景,請注意利用索引的有序性。order by 最後的字段是組合索引的一部分,並且放在索引組合順序的最後,避免出現 file_sort 的情況,影響查詢效能。

什麼是file_sort

可以理解為外部排序,就是把select的資料,按照order by的列 ,在記憶體中進行一次排序,然後返回結果。

注意:索引中有範圍查詢,那麼索引有序性無法利用,如:where a>10 order by b; 索引a_b 無法排序。

6.建組合索引的時候,區分度最高的在最左邊。

如果 where a=? and b=? ,a 列的幾乎接近於唯一值,那麼只需要單建 idx_a 索引即可。

說明:存在非等號和等號混合判斷條件時,在建索引時,請把等號條件的列前置。如:where a>? and b=? 那麼即使 a 的區分度更高,也必須把 b 放在索引的最前列。

mysql資料庫規約 MySQL資料庫規約

8 字段允許適當冗餘,以提高查詢效能,但必須考慮資料一致。冗餘欄位應遵循 1 不是頻繁修改的字段。2 不是 varchar 超長字段,更不能是 text 字段。9 單錶行數超過 500 萬行或者單錶容量超過 2gb,才推薦進行分庫分表。二 索引規約 1 業務上具有唯一特性的字段,即使是多個欄位的組合...

MySQL資料庫規約

1 表達是與否概念的字段,必須使用 is 的方式命名,資料型別是 unsigned tinyint 1 表示是,0 表示否 2 表名 欄位名必須使用小寫字母或數字,禁止出現數字開頭,禁止兩個下劃線中間只出現數字。資料庫欄位名的修改代價很大,因為無法進行預發布,所以欄位名稱需要慎重考慮。3 表名不使用...

資料庫使用規約

1 強制 必須使用innodb儲存引擎 2 強制 必須使用utf8字符集,是否有表情考慮使用utf8mb4 3 強制 資料表 資料字段必須加入中文注釋 4 強制 禁止儲存大檔案或者大 6 強制 表必備字段 id,create id,create time,update id,update time,...