文章详情页
Mysql 组合索引最左原则的疑惑
浏览:176日期: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. javascript - hexo可以配置文章文件名为随机数么?2. python3.x - python 中的maketrans在utf-8文件中该怎么使用3. python - 用urllib抓取网页上的下载链接,目标文件是xls形式,但发现抓下来的xls是空表,里面只有一句报错信息,求帮助。4. css - ul ol前边的标记如何调整样式呢5. 用CSS3 box-sizing 属性实现两个并排的容器,如果想让容器中间有间隔该如何实现6. mysql - C#连接数据库时一直这一句出问题int i = cmd.ExecuteNonQuery();7. html5 - vue-cli 装好了 新建项目的好了,找不到项目是怎么回事?8. java - ajax成功到后台不知道为什么一直回调失败函数9. node.js - webpack 配置文件 运行出错10. html - 爬虫时出现“DNS lookup failed”,打开网页却没问题,这是什么情况?
排行榜

网公网安备