数据库索引问题求助

发布于 2022-09-13 00:14:15 字数 112 浏览 25 评论 0

大佬们,请教一个问题:
如果数据库存在索引(a, b, c), (d, b, c),
此时有查询条件 a = 1 and b = 2 and d=3
这时数据库会怎么走索引啊?两个中选一个吗?

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

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

发布评论

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

评论(3

抱猫软卧 2022-09-20 00:14:15

自己搞个数据库看一下执行计划就知道了。


单纯分析的话,根据最左匹配原则会走 (a, b, c)索引的,但是只会用到a, b两个字段。因为d不在索引内,需要进行回表选出所有符合条件a, b的数据,然后对d进行过滤。

橘虞初梦 2022-09-20 00:14:15

EXPLAIN一下。


最终只会用一个索引,联合索引,根据最左匹配原则,命中第一个联合索引。你也可以强制使用第二个索引。

≈。彩虹 2022-09-20 00:14:15

可能会走index(a,b)index(d,b)MySQL会根据统计表预估走索引行数和资源消耗,选择优化器认为的最优方案

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