文章详情页
Mysql 组合索引最左原则的疑惑
浏览:134日期: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. mongoDB批量插入文档时,运行下面代码,用MongoVUE查看数据库,mongo库中只存在一个文档?不应该是20个吗?2. node.js - vue-cll+sass 样式不出来 已经npm install sass、 sass-loader了3. html5 - 如何解决微信网页偶尔出现的乱码问题?4. android - 试用百度地图sdk,运行结果出来一片空白5. vue.js - Environment variable $ANDROID_HOME not found !(macOS)6. PHPExcel表格导入数据库怎么导入7. 什么是前后端分离?用vue angular等js框架就能实现前后分离了吗?8. 用PHP怎么在微信公众号里使用模板信息,公众号还未做开发?9. java - 如何设计带时间限制的激活码?10. javascript - JS用ajax爬取百度外卖店家信息
排行榜
