1. 程式人生 > >關於Mysql索引的一點思考--什麼情況下索引不會被用到

關於Mysql索引的一點思考--什麼情況下索引不會被用到

mysql索引是一個非常好用的檢索優化手段,但是用不好,也會影響資料庫的查詢速度。

下面講幾種索引使用不到的情況:

1.like查詢中,使用%

   %在條件之前


這種情況下,索引是不會被使用到的。
這裡講一下我的分析,如有不對,還請各位指正。
Mysql預設使用的引擎是InnoDB引擎,InnoDB引擎底層結構是B樹結構,也就是二叉樹結構,有興趣的可以去看看資料結構,這裡我就不誤人子弟了。
如果萬用字元%在條件前面,mysql首先是掃描全表,然後再去匹配,所以索引也就失效了。
那什麼情況下%在條件前面索引會有效呢?

只有在這種情況時,即查詢建立了索引的列的情況下,但是這種情況下跟是否使用%沒有關係的,因為查詢索引列的時候本身就用到了索引

----------------------------------------
%在條件之後


2.如果一個字串型別的欄位,查詢時,傳遞的是一個整形數,也會全表掃描