mysql高階索引分析,索引失效

2021-09-12 02:14:07 字數 860 閱讀 9922

一,索引分析

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...