索引使用注意事項:
1.索引列運算
不要在索引列上進行運算操作,否則索引將失效;
2.字符串不加引號
字符串類型使用時,不加引號,否則索引將失效;
3.模糊查詢
如果僅僅是尾部模糊匹配,索引將不會失效。如果是頭部匹配,索引失效;
4.Or連接的條件
用or分開的條件,如果or前的條件中的列有索引,二后面的列中沒有索引,那么涉及的索引都不會被用到。
5.數據分布影響
如果MySQL評估使用索引比全表更慢,則不使用索引。
6.最左前綴法則
如果索引了多列(聯合索引),要遵循最左前綴法則。最左前綴法則指的是查詢從索引的最左列開始,并且不跳過索引中的列。如果跳躍某一列,索引將部分失效(后面的索引字段失效)。
7.范圍查詢
聯合索引中,出現范圍查詢(>, <),范圍查詢右側的列索引失效。在可以的情況下,盡量換成(>=, <=)。
8.SQL提示
SQL提示是優化數據庫的一個重要手段,簡單來說,就是在SQL語句中加入一些認為提示來達到優化操作的目的。? ? use index, ignore index, force index;
9.覆蓋索引
盡量使用覆蓋索引(查詢使用了索引,并且需要返回的列,在該索引中已經全部能夠找到),減少使用select*。
知識小貼士:using index condition:查找使用了索引,但是需要回表查詢數據
using where, using index:查找使用了索引,但是需要的數據都在索引列中能找到,所以不需要回表查詢數據。
10.前綴索引
語法
create index idx_xxxx on table_name(column(n));
前綴長度
11.單列索引與聯合索引
單列索引:即一個索引只包含單個列
聯合索引:即一個索引包含了多個列
在業務場景中,如果存在多個查詢條件,考慮針對查詢字段建立索引時,建議建立聯合索引,而非單列索引。