明明有主键索引,为什么mysql索引失效
执行语句,发现仓储表wh_warehouse全表扫描
EXPLAIN
SELECT
*
FROM
wh_inbound_order_detail e
LEFT JOIN wh_warehouse ww
ON ww.id = e.warehouse_id
WHERE ww.isGs = 0
AND ww.is_jiancai = 0
明明有索引的啊,为什么呢?只有主键索引的时候没没匹配到,那么干脆在创建个联合索引吧,没想到还是没匹配到。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
数据库是否使用索引是有机制的,不是百分百都使用索引。
使用索引之前会判断,到底有没有必要使用索引,但是具体是什么情况不走索引我没有深入了解过,我的猜测是当判断使用索引的速度更慢时,如果你的表里面只有几十几百条数据,完全没有必要去调用索引。
如果要强制使用索引:
select * from table force index(index_name)
mysql当数据量大且扫描超出数据的3/5时会丢索而使用全表扫描,因为mysql觉得使用全表扫描更快。
且图中key才是真正使用到索引的表示,possible_keys是可能使用到。