MySQL索引優化實戰
阿新 • • 發佈:2018-12-11
在下列示例中,在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連線索引失效
總結練習: