mysql索引失效的原因

2021-10-25 03:54:40 字數 357 閱讀 4045

1.不在索引列上做任何操作(計算、函式、(自動or手動)型別轉換),會導致索引失效而轉向全表掃瞄

2.盡量使用覆蓋索引(只訪問索引的查詢(索引列和查詢咧一致)),減少select*

3.mysql在使用不等於(!=、<>)或like的左模糊查詢的時候無法使用索引會導致全表掃瞄

4.is null 和 is not null 也無法使用索引

5.字串不加單引號索引失效,因為這裡有乙個隱式的型別的轉換操作,更嚴重會導致行鎖變表鎖,降低sql效率

6.少用or ,用它來連線時索引會失效   

7.%不能在左邊

8.全值匹配我最愛

建立幾個復合索引字段,最好就用上幾個字段。且按照順序使用

mysql 索引失效原因

1.隨著表的增長,where條件出來的資料太多,大於15 使得索引失效 會導致cbo計算走索引花費大於走全表 2.統計資訊失效 需要重新蒐集統計資訊 3.索引本身失效 需要重建索引 下面是一些不會使用到索引的原因 索引失效 1 沒有查詢條件,或者查詢條件沒有建立索引 2 在查詢條件上沒有使用引導列 ...

MySQL索引失效的原因總結

使用索引時數量和順序應該和建立索引時是一致的,保證全值匹配 最佳的左字首法則 不要在索引列做任何操作 計算,函式,自動和手動 型別轉換 會導致索引失效 儲存引擎不能使用索引中範圍條件右邊的列 盡量使用覆蓋索引 只訪問索引的查詢 索引列和查詢列一致 減少使用select mysql在使用不等於 或者 ...

索引失效的原因

1 隱式轉換導致索引失效.這一點應當引起重視.也是開發中經常會犯的錯誤.由於表的字段tu mdn定義為varchar2 20 但在查詢時把該字段作為number型別以where條件傳給oracle,這樣會導致索引失效.錯誤的例子 select from test where tu mdn 13333...