转于:https://blog.csdn.net/claram/article/details/77574600

首先明确:为什么要用联合索引?

对于查询语句“SELECT E.* FROM E WHERE E.e1=1 AND E.e3=2”涉及到两列,这个时候我们一般采用一个联合索引(e1, e3);而不用两个单列索引,这是因为一条查询语句往往应为mysql优化器的关系只用一个索引,就算你有两个索引,他也只用一个;在只用一个的基础之上,联合索引是会比单列索引要快的;

下面讲讲联合索引的使用规则和哪些情况会命中不了联合索引

示例如下。首先创建表:

CREATE TABLE E (e1 INT, e2 VARCHAR(9), e3 INT, PRIMARY KEY(e1, e3));

这样就建立了一个联合索引:e1,e3

测试数据

INSERT INTO E

(e1, e2, e3)

VALUES(1, ‘aa’, 2);

触发联合索引是有条件的:

1、使用联合索引的全部索引键,可触发索引的使用。

例如:SELECT E.* FROM E WHERE E.e1=1 AND E.e3=2

2、使用联合索引的前缀部分索引键,如“key_part_1 常量”,可触发索引的使用。

例如:SELECT E.* FROM E WHERE E.e1=1

3、使用部分索引键,但不是联合索引的前缀部分,如“key_part_2 常量”,不可触发索引的使用。

例如:SELECT E.* FROM E WHERE E.e3=1

4、使用联合索引的全部索引键,但索引键不是AND操作,不可触发索引的使用。

例如:SELECT E.* FROM E WHERE E.e3=2 OR E.e1=1

以上通过explain测试即可看出效果

MySQL联合索引or_MySQL联合索引命中条件相关推荐

  1. mysql 联合索引 命中_mysql联合索引命中条件

    转于:https://blog.csdn.net/claram/article/details/77574600 首先明确:为什么要用联合索引? 对于查询语句"SELECT E.* FROM ...

  2. MySQL联合索引(abc)命中规则

    1.建表 mysql创建一张表,表名:'test_models' id列为 主键,int类型 ,自增 a,b,c,d,e 全部是int(11) 为(a,b,c)添加一个联合索引 index_abc 执 ...

  3. sql优化之:数据库索引创建原则,or/in/union与索引优化,聚集索引/非聚集索引/联合索引/索引覆盖,MySQL冗余数据的三种方案,MySQL双主一致性架构优化(来源:架构师之路)

    一.一些常见的SQL实践 (1)负向条件查询不能使用索引 select * from order where status!=0 and stauts!=1 not in/not exists都不是好 ...

  4. mysql怎样实现先判断后联合_MYSQ创建联合索引,字段的先后顺序,对查询的影响分析...

    MYSQ创建联合索引,字段的先后顺序,对查询的影响分析 前言 对于联合索引我们知道,在使用的时候有一个最左前缀的原则,除了这些呢,比如字段放置的位置,会不会对索引的效率产生影响呢? 最左匹配原则 联合 ...

  5. MySQL 性能分析 之 联合索引(复合索引)实践分析

    MySQL 性能分析 之 联合索引(复合索引)实践分析 作为开发者,大家都知道,一个服务器.一个数据库的性能是项目的重中之重,后台架构.写法与数据库设计的好坏往往直接影响到整个项目的性能. 索引:是当 ...

  6. mysql索引篇之覆盖索引、联合索引、索引下推

    覆盖索引 在之前<mysql索引初识>这篇文章中提到过,mysql的innodb引擎通过搜索树方式实现索引,索引类型分为主键索引和二级索引(非主键索引),主键索引树中,叶子结点保存着主键即 ...

  7. 《MySQL——使用联合索引、覆盖索引,避免临时表的排序操作》

    联合索引避免临时表排序 在上一篇笔记(MySQL--order by逻辑(全字段排序与rowid排序))中,讲到查询语句查询多个字段的时候使用order by语句实现返回值是有序的,而order by ...

  8. 覆盖索引与联合索引_浅析MySQL的索引覆盖和索引下推

    写在前面 在MySQL数据库中,索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点,索引就是为了提高数据查询的效率.今天我们来聊聊在MySQL索引优化中两种常见的方式,索引覆盖和 ...

  9. mysql联合索引和单索引_mysql联合索引跟单列索引的区别

    为了提高数据库效率,建索引是家常便饭:那么当查询条件为2个及以上时,我们是创建多个单列索引还是创建一个联合索引好呢?他们之间的区别是什么?哪个效率高呢?我在这里详细测试分析下. 一.联合索引测试 注: ...

最新文章

  1. C++_泛型编程与标准库(二)
  2. webgl值得重视的基础构建
  3. 智能车竞赛华南赛区湖北文理学院赛点
  4. 大数据分析工资单:六大行员工再涨薪 人均年薪超26万
  5. MES系统模块设计之物料控制 Material Control -- 1
  6. Android 使用MediaPlayer播放assets或者raw目录的音频文件
  7. 牛客练习赛26 E-树上路径 (树链剖分+线段树)
  8. 如何在开源社区贡献代码_如何在15分钟内从浏览器获得您的第一个开源贡献
  9. Azure Table storage 基本用法 -- Azure Storage 之 Table
  10. php新闻删除功能设计,php原生开发新闻站之删除新闻
  11. 网络编程之 listen()函数的使用与三次握手的理解
  12. Apache Tomcat 再爆严重安全漏洞
  13. Chrome浏览器的版本查看 以及V8 javascript 引擎版本查看
  14. ASP.Net Mvc 发布网站 (样式+图片问题)
  15. 烟花散尽漫说无(参考资料)
  16. 使用TF卡烧录Jetson NX开发板
  17. linux lefse分析,LEfSe分析,你真的懂了么
  18. 苹果电脑双系统正确打开方式,虚拟机已经Out了
  19. TOOD: Task-aligned One-stage Object Detection
  20. Swift 函数的定义及调用

热门文章

  1. 为什么要用宏定义函数
  2. 基于阿里云平台的短信验证码服务API的使用
  3. oracle不定列,oracle行转列(动态行转不定列)
  4. 苹果备忘录怎么调字体大小_苹果备忘录误删了怎么恢复?这么好的方法你必须知道...
  5. 虎书学习笔记4:图形学基础数学(隐式二维直线、隐式二次曲线、二维参数曲线、二维参数直线、二维参数圆)
  6. 多家游戏交易平台发声,禁止未成年人买号租号
  7. v-model获取值与.value取值的区别(v-model原理分析)
  8. 基于android的共享雨伞app
  9. android序列化讲解
  10. 苹果小程序上下拉出现留白情况