文章详情页
Mysql 组合索引最左原则的疑惑
问题描述
如果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. Angular.js 无法设置Authorization头,该怎么解决?2. angular.js - angular中可以在ng-click中直接调用service的方法吗?3. angular.js - ionic 弹窗样式4. android - Menu的click监听器可以使用switch()case来匹配具体点击的Item吗?5. angular.js - 指令交互问题,未找到依赖指令6. angular.js - angularjs 注入模块报错 很怪异... 求解惑7. angular.js - 通过数据中children的个数自动生成能点击展开的div8. angular.js - angular参数问题9. angular.js - 在ng-option 里使用过滤器无效10. angular.js - ionic该如何强制刷新页面
排行榜