索引不生效的場景

2022-06-22 18:42:10 字數 487 閱讀 7075

組合索引

舊的mysql版本可能因為索引的順序問題不生效

單列索引

思路:一般索引不生效通常意味著資料庫的引擎解析優化的查詢需要全表檢索

所以(這邊校驗的是mysql 5.7):

1、對where做了函式判斷(order by 也一樣)

substr(username, 2)='admin'

2、本來以為not in會觸發,結果發現是範圍查詢,也有用到,只是可能性能有差異

3、exists和not exists倒是都有兩個查詢計畫,第乙個用的事全表,第二個具體看有沒有索引,有的話也會用到

4、某些情況下,引擎自動優化的結果:小表查詢

5、型別不匹配的情況下會觸發型別轉換,導致索引失效

6、多表查詢,組合索引情況下,前乙個索引適用了範圍匹配

7、資料量太大導致優化器放棄使用索引

8、查詢出的資料超過總資料的一定比例

9、order by跨表或用到函式和計算

影響mysql索引生效的場景

首先我們要知道mysql中 myisam,innodb預設使用的是 btree索引,至於btree的資料結構是怎樣的都不重要,只需要知道結果,既然是索引那這個資料結構最後是排好序 就像新華字典他的目錄就是按照a,b,c.這樣排好序的 所以你在找東西的時候才快,比如你找 中 這個字的解釋,你肯定就會定...

mysql 索引沒有生效 MySQL索引不生效

前言 今天開發過程中遇到乙個sql問題,現象是兩個表left join關聯,資料量都不大,關聯的id都建立了索引。但是執行完需要10.971 s,有點不可思議。排查過程 原sql如下 select my400cr.id metadimensionid,date my400cr.count begin...

斷點不生效

我是單獨某乙個cpp檔案裡的斷點不生效了,工程內其他cpp檔案斷點還仍然生效!是由於我debug執行時候修改了該cpp檔案導致的。工具 選項 除錯 要求原始檔與原始版本完成匹配 去掉勾 require source files to exactly match the original versio...