文章详情页
Mysql 组合索引最左原则的疑惑
浏览:25日期:2022-06-15 17:53:39
问题描述
如果test表有一个组合索引(a,b),执行如下两条语句。explain select * from test where a=1 and b=1;explain select * from test where b=1 and a=1;执行结果显示这两条语句都用索引。根据最左原则,只有第一条使用索引,第二条不使用索引。不明白为什么,求解惑
问题解答
回答1:题主列出的情况,mysql会优化where子句的条件顺序,让查询符合索引顺序。
更具体点,上面的sql属于交集查询(都是and),在mysql中会使用Index Merge intersection algorithm算法来调整条件子句顺序。更详细的解释参见官方文档。
相关文章:
1. java - 主线程在子线程未结束情况下退出2. Whitelabel错误页面发生意外错误(类型=未找到,状态= 404)/WEB-INF/views/home.jsp3. 老师 我是一个没有学过php语言的准毕业生 我希望您能帮我一下4. javascript - 原生JS实现发送验证码计秒5. python - from ..xxxx import xxxx到底是什么意思呢?6. 冒昧问一下,我这php代码哪里出错了???7. javascript - 责任具体在哪一方8. pdo 写入到数据库的内容为中文的时候写入乱码9. mysql - 请教一条sql10. CSS清除浮动有几种方法?
排行榜