文章详情页
Mysql 组合索引最左原则的疑惑
浏览:103日期: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. sql语句 - 如何在mysql中批量添加用户?2. php - 数据库表如果是null怎么替换为其他字段的值3. SQLAlchemy 访问Mysql数据库弹出Warning,VARIABLE_VALUE,如何解决?4. mysql建表报错,查手册看不懂,求解?5. mysql - JAVA怎么实现一个DAO同时实现查询两个实体类的结果集6. shell - Update query wrong in MySQL7. 怎么php怎么通过数组显示sql查询结果呢,查询结果有多条,如图。8. mysql - 数据库建字段,默认值空和empty string有什么区别 1109. mysql - SQL语句可以提供“查询表,并至第100条结果为止”吗?10. javascript - mysql插入数据时怎样避免与库中的数据重复?
排行榜
