1、如果條件中有 or ,即使其中有條件帶索引也不會使用(這也是為什么盡量少用or的原因)

注意:要想使用or,又想讓索引生效,只能將or條件中的每個列都加上索引
如果出現OR的一個條件沒有索引時,建議使用 union ,拼接多個查詢語句
2.、like查詢是以%開頭,索引不會命中

只有一種情況下,只查詢索引列,才會用到索引,但是這種情況下跟是否使用%沒有關系的,因為查詢索引列的時候本身就用到了索引

3. 如果列類型是字符串,那一定要在條件中將數據使用引號引用起來,否則不使用索引

4. 沒有查詢條件,或者查詢條件沒有建立索引
5. 查詢條件中,在索引列上使用函數(+, - ,*,/), 這種情況下需建立函數索引
6. 采用 not in, not exist
7. B-tree 索引 is null 不會走, is not null 會走
8. 鏈表時,如果關聯字段的的編碼不同,也不會走索引。如一個表時 utf8,另外一個表是utf8mb4