6. 添加了索引但不被使用的幾種常見可能
上1講聊了甚么時候不要使用索引,但有時候使用了也不見得會被使用。
下面是幾種添加了索引但不被使用的情況
1) 多列索引查詢條件沒有使用最左側的字段
對創建的多列索引,如果查詢條件沒有使用最左側的列,索引就不會被使用。
多列索引:1個索引對應多個列
比如
我創建了這么個多列索引
如果where語句中有deptno則會使用索引,否則不使用
以下
2) 如果條件中有or
只要條件中有1個字段沒有添加索引,則不會使用索引
3) 類型不對應
比方說,如果列類型是字符串,那1定要在條件中將數據使用引號援用起來。否則不使用索引
4) mysql優化器的決定
如果mysql估計使用全表掃描要比使用索引快,則不使用索引
最后1點,也是筆者感受最深的1點
5) like‘%aaa’不會使用到索引
只要模糊查詢的模糊值在字符串前面,則不會使用索引‘%aaa’和‘_aaa’都不會!
以下
應當說這是Mysql給程序員們開的1個玩笑。要是我的表數據量很大,而且又需要使用like’%%’這樣的模糊查詢來檢索時,該怎樣辦??
下1章,筆者將會給大家分享解決這個問題的N種方法!
上一篇 數據庫調優教程(七)索引的代價
下一篇 CRT中文字符橫向顯示解決