文章详情页
Mysql 组合索引最左原则的疑惑
浏览:175日期: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. python - 用urllib抓取网页上的下载链接,目标文件是xls形式,但发现抓下来的xls是空表,里面只有一句报错信息,求帮助。2. python3.x - python 中的maketrans在utf-8文件中该怎么使用3. javascript - 一排三个框,各个框的间距是15px,距离外面的白框间距也是15px,这个css怎么写?4. javascript - immutable配合react提升性能?5. javascript - vue 手机端项目在进入主页后 在进入子页面,直接按返回出现空白情况6. javascript - jQuery post()方法,里面的请求串可以转换为GBK编码么?可以的话怎样转换?7. django - python 2层文件夹导入8. html5 - vue-cli 装好了 新建项目的好了,找不到项目是怎么回事?9. html5 - javascript写业务有用到什么编程范式没?10. mysql - C#连接数据库时一直这一句出问题int i = cmd.ExecuteNonQuery();
排行榜

网公网安备