数据库索引问题求助
大佬们,请教一个问题:
如果数据库存在索引(a, b, c), (d, b, c),
此时有查询条件 a = 1 and b = 2 and d=3
这时数据库会怎么走索引啊?两个中选一个吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
大佬们,请教一个问题:
如果数据库存在索引(a, b, c), (d, b, c),
此时有查询条件 a = 1 and b = 2 and d=3
这时数据库会怎么走索引啊?两个中选一个吗?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
自己搞个数据库看一下执行计划就知道了。
单纯分析的话,根据
最左匹配原则
会走(a, b, c)
索引的,但是只会用到a, b
两个字段。因为d
不在索引内,需要进行回表
选出所有符合条件a, b
的数据,然后对d
进行过滤。EXPLAIN
一下。最终只会用一个索引,联合索引,根据最左匹配原则,命中第一个联合索引。你也可以强制使用第二个索引。
可能会走
index(a,b)
或index(d,b)
,MySQL
会根据统计表预估走索引行数和资源消耗,选择优化器认为的最优方案