文章详情页
Mysql 组合索引最左原则的疑惑
浏览:146日期: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的SELECT...FOR UPDATE究竟起什么作用2. Java。如何将文本追加到file.txt的顶部3. pdo_mysql 值自增写法4. Java中的多人游戏。将客户端(玩家)连接到其他客户端创建的游戏5. javascript - js对象 属性的访问和创建6. java - 显示的时间能不能去掉毫秒7. mysql主从,从库锁表会导致复制阻塞吗?8. c++ - win764位环境下,我用GCC为什么指针占8个字节,而long是4个字节?9. windows-7 - win7下使用cmder,如何设置vim的tab为4个空格?10. css - Angular2中怎么不通过路由实现多个button的切换效果?
排行榜

网公网安备