文章详情页
Mysql 组合索引最左原则的疑惑
浏览:142日期: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. MYSQL新建用户设置可以远程访问的问题2. python - 求一个在def中可以实现调用本def满足特定条件continue效果的方法(标题说不太清楚,请见题内描述)3. golang - 用IDE看docker源码时的小问题4. mysql - SQL操作时间的函数?5. docker网络端口映射,没有方便点的操作方法么?6. 关docker hub上有些镜像的tag被标记““This image has vulnerabilities””7. 正则表达式 - python pandas的sep参数问题8. javascript - ionic run android报错9. javascript - 用表单提交两个时间段请求后台返回对应数据时出现的一些问题!10. docker内创建jenkins访问另一个容器下的服务器问题
排行榜
