一,索引分析
1,單錶
2,兩表
3,三表
join優化
優先優化nestedloop(巢狀迴圈鏈結)的內層迴圈;
保證join語句中被驅動表上join條件字段已經被索引;
當無法保證驅動表join條件欄位被索引且記憶體資源充足的前提下,不要太令色join buffer的設定
二,索引失效
1,全匹配最好
2,最佳左字首法則:查詢是不跳過多值索引的中間值;
3,不在索引上做任何操作(計算,函式,自動or手動型別轉換),會導致索引失效全表掃瞄;
4,儲存引擎不能使用索引中範圍條件,右邊的列
5,盡量使用覆蓋索引(只訪問索引的查詢(索引的列和查詢的列一致)),減少select *;
6,mysql在使用不等於(!=或<>)時無法使用索引,導致全表掃瞄,但是like後面不失效;
7,is null,is not null也無法使用索引;
8,like以萬用字元開頭(%abc)mysql索引會失效變成全表掃瞄;
解決辦法覆蓋索引,select後面字段建立索引,不要使用*
;
9,字串不加單引號索引失效;
10,少用or用它來連線時索引失效;
注意:order by的順序必須和索引一致不然也會using filesort;
但是order by前,查詢條件等於乙個定製,再使用order by 排序,不會出現using filesort;
mysql索引失效 常見mysql索引失效條件
使用索引的一般語句 1 where條件中有or,除非or的所有欄位都有索引,只要有乙個沒有索引,就不走索引 explain select from jf user ju where ju.user id or ju.superior1 yyy user id是主鍵,superior1是普通索引,結果...
mysql 主鍵失效 MySQL索引(索引失效)
索引 索引也是一張表,該錶儲存了主鍵與索引字段,並指向實體表的記錄。myisam儲存引擎,資料檔案 索引檔案 表結構檔案分開儲存 innodb儲存引擎,資料和索引儲存在乙個檔案中 b tree索引 hash索引 hash索引 只有memory儲存引擎支援 查詢一條記錄的速度非常快 b tree索引 ...
mysql 索引失效場景 Mysql 索引失效場景
例如 一張user表 有欄位屬性 name,age 其中name為索引 下面列舉幾個索引失效的情況 1.select from user where name xzz or age 16 例如這種情況 當語句中帶有or的時候 即使有索引也會失效。2.select from user where na...