InnoDB最左原则

联合索引才会有最走原则,一个索引(name,age,sex)有三个字段作为联合索引,以下哪个查询sql会用索引呢 ?

索引数据
联合索引

EXPLAIN SELECT * from a_table where name='zhangsan' and age=12 #会用到索引

EXPLAIN SELECT * from a_table where sex='Male' and name='zhangsan'  #用到索引 ,查询器内部会优化,调整顺序后遵循最左原则

EXPLAIN SELECT * from a_table where sex='Male' and age=12  ## 未用到索引

EXPLAIN SELECT * from a_table where name='zhangsan' and age>11 and sex='Male'  # 遇到范围查询时会停下,sex字段没有用到索引

联合索引,多个字段会拼接在一起,在查询的时候只能遵守最左原则,在范围查找不会优化顺序,遇到范围查找运算符会停止使用索引

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。2、对查询进行优化...
    呆萌孙先生阅读 1,553评论 0 0
  • 原文转载 原文因为没有配上explain的结果图片 补充上 创建表 create table test(a int...
    小哥哥吖Q阅读 2,812评论 0 0
  • 文章目录 MySQL 索引使用有哪些注意事项呢?索引哪些情况会失效索引不适合哪些场景 MySQL 遇到过死锁问题吗...
    祁小彬阅读 3,544评论 0 1
  • 一、数据库概述 1.为什么软件测试工程师还需要学习数据库以及开发方面的知识? ●测试工程师在测试软件过程中,不仅仅...
    AYang阅读 1,813评论 0 0
  • 1. 为什么软件测试工程师还需要学习数据库以及开发方面的知识? 测试工程师的目的是找出软件的不足,并告诉开发工程师...
    睿智的少年阅读 3,693评论 0 0