資料庫調優教程(九) 添加了索引但不被使用的幾種常見可能,調優索引

來源:互聯網
上載者:User

資料庫調優教程(九) 添加了索引但不被使用的幾種常見可能,調優索引
三、           索引


6.      添加了索引但不被使用的幾種常見可能


上一講聊了什麼時候不要使用索引,但有時候使用了也不見得會被使用。

下面是幾種添加了索引但不被使用的情況


1)    多列索引查詢條件沒有使用最左邊的欄位

對於建立的多列索引,如果查詢條件沒有使用最左邊的列,索引就不會被使用。

多列索引:一個索引對應多個列

比如

我建立了這麼個多列索引

[plain] view plaincopy
  1. create index index_deptno_loc on dept (deptno,loc);  

如果where語句中有deptno則會使用索引,否則不使用

如下


2)    如果條件中有or

只要條件中有一個欄位沒有添加索引,則不會使用索引

 

3)    類型不對應

比方說,如果列類型是字串,那一定要在條件中將資料使用引號引用起來。否則不使用索引

 

4)    mysql最佳化器的決定

如果mysql估計使用全表掃描要比使用索引快,則不使用索引

 

最後一點,也是筆者感受最深的一點


5)    like‘%aaa’不會使用到索引

只要模糊查詢的模糊值在字串前面,則不會使用索引‘%aaa’和‘_aaa’都不會!

如下



應該說這是Mysql給程式員們開的一個玩笑。要是我的表資料量很大,而且又需要使用like’%%’這樣的模糊查詢來檢索時,該怎麼辦??

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.