MYSQL中哪些情况会导致索引失效

1. 以%开头的LIKE查询

优化方案:首先扫描二级索引获取满足条件的PRIMARY KEY,在根据主键回表查询。

SELECT * FROM
(SELECT actor_id FROM actor WHERE last_name LIKE '%NI%') tmp 
INNER JOIN actor a ON a.`actor_id`=tmp.actor_id

2. 类型的隐式转换(字符转数字会失效,数字转字符不会失效)

例如:SELECT * FROM actor WHERE last_name=1;   -- 会失效

SELECT * FROM actor WHERE actor_id='1';  -- 不会失效

3. 联合索引不满足最左原则

4. MYSQL优化器估计使用索引比全部扫描要慢

5. 使用or时,必须保证其前后都能有索引,如果其中任一不包含索引都会导致索引失效

发布了5 篇原创文章 · 获赞 1 · 访问量 9379
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 创作都市 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览