1. 程式人生 > >MySQL索引優化實戰

MySQL索引優化實戰

在下列示例中,在name,age,pos上建立複合索引 idx_staffs_nameAgePos

一、全值匹配

這個最高效最直接,如下查詢條件直接是欄位的全值

二、最左字首匹配

如果索引了多列如a、b、c時就需要遵循最左字首法則。指的是查詢從索引的最左前列開始並且不跳過索引中的列。

三、索引列少計算

儘可能避免在索引列進行計算,否則會引起索引失效,

四、範圍後全失效

在進行範圍查詢時,範圍後的索引全會失效導致查詢效率降低,如下查詢,只能用到name,age索引,pos將失效

五、儘量使用覆蓋索引

解釋:當你的索引滿足你要查詢的資料時將會用到覆蓋索引,如下,select * 會查詢所有列,其中有些列並未建索引,但select name,age,pos時三個列都在索引之中,因此用到了覆蓋索引,

六、使用不等於(!=)時無法使用索引

七、is null / is not null無法使用索引

在實際應用中應儘量避免null欄位,如果需要為空也應該設定為''空字串

八、like以萬用字元開始無法使用索引,百分Like加右邊(like 'aa%')

如果必須要使用Like '%%',可以在查詢列上索引,如下:

九、字串不加單引號''索引失效

十、少用OR,用OR連線索引失效

總結練習: