1. 程式人生 > 其它 >MySQL索引建立原則

MySQL索引建立原則

一、索引的建立原則
(1)、對查詢頻次較高, 且資料量比較大的表, 建立索引。
(2)、索引欄位的選擇, 最佳候選列應當從where子句的條件中提取, 如果where子句中的組合比較多, 那麼應當挑選最常用, 過濾效果最好的列的組合。
(3)、如果where後有多個條件經常被用到, 建議建立複合索引, 複合索引需要遵循最左字首法則, N個列組合而成的複合索引, 相當於建立了N個索引。
    複合索引命名規則 index_表名_列名1_列名2_列明3,比如:create index idx_seller_name_sta_addr on tb_seller(name, status, address)
(4)、使用唯一索引, 區分度越高, 使用索引的效率越高。
(5)、索引並非越多越好, 如果該表贈,刪,改操作較多, 慎重選擇建立索引, 過多索引會降低表維護效率。
(6)、使用短索引, 提高索引訪問時的I/O效率, 因此也相應提升了Mysql查詢效率。
(7)、多表連線的欄位上需要建立索引,這樣可以極大提高表連線的效率。
(8)、排序欄位上, 因為排序效率低, 新增索引能提高查詢效率。

二、如何避免索引失效
(1)、複合索引遵循最左字首法則
     如果在查詢的時候使用了複合索引, 要遵循最左字首法則, 也就是查詢從索引的最左列開始, 並且不能跳過索引中的列;如果不包含最左邊的索引列, 則其他索引不生效;如果包含了最左邊的索引列, 但是跳過了一列直接索引了複合索引的第三列, 則第三列的索引不生效。
(2)、不要在索引上使用運算, 否則索引也會失效。
(3)、字串不加引號, 造成索引失效。
(4)、儘量使用覆蓋索引, 避免select *, 這樣能提高查詢效率。
(5)、or關鍵字連線
  用or分割開的條件, 如果or前面的列有索引, or後面的列沒有索引, 那麼查詢的時候索引會失效, 如果一定要用or查詢, 可以考慮下or連線的條件列都加索引, 這樣就不會失效了。
(6)、like模糊查詢
    在使用like模糊查詢時, 如果like%也就是%加在後面索引不會失效, 如果%like或%like%也就是%加在前面, 索引會失效。
(7)、如果查詢的列佔整張表的絕大多數, 那麼就會全表掃描, 不會走索引。 所以在查詢的時候走不走索引不能百分百肯定。
    也就是說如果查詢一個稀有資料, 如果建立了索引, 就會走索引。 如果查詢的資料表達絕大多數都符合條件, 就全表掃描, 不走索引。