1、遵循最左法則(聯合索引),從索引的最左列開始,并且不跳過索引中的列。如果跳躍某一列,索引將部分失效(后面的字段索引失效)。
2、在聯合索引當中出現范圍查詢(>,<),范圍查詢中右側索引失效。規避方法:使用>=,<= 可以避免索引失效。
3、不要在索引列上進行運算操作(函數運算等等),否則索引將會失效。
4、字符串類型字段,如果查詢不加引號,索引失效
5、模糊查詢,%關鍵字%,如果尾部%不會失效,前面%索引失效。
6、or鏈接的使用,用or分割開的條件,如果or前的條件中的列有索引,而后面的列沒有索引,那么涉及的索引都不會用到。 以下id有主鍵索引,phone為普通索引,age是聯合索引。
image.png
6、如果表中的數據量比較小,MySQL 優化器可能會選擇全表掃描而不是使用索引來執行查詢。
7、前綴索引,具體如下圖:
image.png
8、單列索引和聯合索引的使用:
image.png
image.png