明明有主键索引,为什么mysql索引失效

发布于 2022-09-12 23:37:22 字数 406 浏览 14 评论 0

执行语句,发现仓储表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 

image.png
明明有索引的啊,为什么呢?只有主键索引的时候没没匹配到,那么干脆在创建个联合索引吧,没想到还是没匹配到。
image.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

﹎☆浅夏丿初晴 2022-09-19 23:37:22

数据库是否使用索引是有机制的,不是百分百都使用索引。

使用索引之前会判断,到底有没有必要使用索引,但是具体是什么情况不走索引我没有深入了解过,我的猜测是当判断使用索引的速度更慢时,如果你的表里面只有几十几百条数据,完全没有必要去调用索引。

如果要强制使用索引:
select * from table force index(index_name)

后eg是否自 2022-09-19 23:37:22

mysql当数据量大且扫描超出数据的3/5时会丢索而使用全表扫描,因为mysql觉得使用全表扫描更快。image.png
且图中key才是真正使用到索引的表示,possible_keys是可能使用到。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文