什么叫做覆盖索引?

  • 解释一: 就是select的数据列只用从索引中就能够取得,不必从数据表中读取,换句话说查询列要被所使用的索引覆盖。
  • 解释二: 索引是高效找到行的一个方法,当能通过检索索引就可以读取想要的数据,那就不需要再到数据表中读取行了。如果一个索引包含了(或覆盖了)满足查询语句中字段与条件的数据就叫做覆盖索引。
  • 解释三:是非聚集组合索引的一种形式,它包括在查询里的Select、Join和Where子句用到的所有列(即建立索引的字段正好是覆盖查询语句[select子句]与查询条件[Where子句]中所涉及的字段,也即,索引包含了查询正在查找的所有数据)。

不是所有类型的索引都可以成为覆盖索引。覆盖索引必须要存储索引的列,而哈希索引、空间索引和全文索引等都不存储索引列的值,所以MySQL只能使用B-Tree索引做覆盖索引
当发起一个被索引覆盖的查询(也叫作索引覆盖查询)时,在EXPLAIN的Extra列可以看到“Using index”的信息。

注:遇到以下情况,执行计划不会选择覆盖查询。

  1. select选择的字段中含有不在 索引 中的字段 ,即索引没有覆盖全部的列。
  2. where条件中不能含有对索引进行like的操作。

mysql聚集索引,辅助索引,联合索引,覆盖索引

聚集索引:
一个表中只能有一个,聚集索引的顺序与数据真实的物理存储顺序一致。查询速度贼快,聚集索引的叶子节点上是该行的所有数据 ,数据索引能加快范围查询(聚集索引的顺序和数据存放的逻辑顺序一致)。主键!=聚集索引。

辅助索引(非聚集索引):
一个表中可以有多个,叶子节点存放的不是一整行数据,而是键值,叶子节点的索引行中还包含了一个'书签',这个书签就是指向聚簇索引的一个指针,从而在聚簇索引树中找到一整行数据。

联合索引:
就是由多列组成的的索引。遵循最左前缀规则。对where,order by,group by 都生效。

覆盖索引:
指从辅助索引中就能获取到需要的记录,而不需要查找聚簇索引中的记录。使用覆盖索引的一个好处是因为辅助索引不包括一条记录的整行信息,所以数据量较聚集索引要少,可以减少大量io操作。

聚集索引与辅助索引的区别:
叶子节点是否存放的为一整行数据

最左前缀规则:
假设联合索引由列(a,b,c)组成,则一下顺序满足最左前缀规则:a、ab、abc;selece、where、order by 、group by都可以匹配最左前缀。其它情况都不满足最左前缀规则就不会用到联合索引。

覆盖索引与联合索引_MySQL:你知道什么是覆盖索引吗?相关推荐

  1. mysql索引缓存的内容_mysql服务器变量、缓存及索引

    服务器变量 注意:其中有些参数支持运行时修改,会立即生效:有些参数不支持,且只能通过修改配置文件,并重启服务器程序生效:有些参数作用域是全局的,且不可改变:有些可以为每个用户提供单独(会话)的设置. ...

  2. oracle索引与mysql区别_MySQL和Oracle中的唯一性索引从差别(r12笔记第83天)

    今天在修复MySQL数据的时候,发现一个看起来"奇怪"的问题. 有一个表里存在一个唯一性索引,这个索引包含3个列,这个唯一性索引的意义就是通过这3个列能够定位到具体1行的数据,但是 ...

  3. mysql创建主键索引的关键字使用_mysql字段、主键、索引等的创建与修改命令

    //主键 alter table tabelname add new_field_id int(5) unsigned default 0 not null auto_increment ,add p ...

  4. sql加上唯一索引后批量插入_MySQL批量插入遇上唯一索引避免方法

    一.背景 以前使用SQL Server进行表分区的时候就碰到很多关于唯一索引的问题:Step8:SQL Server 当表分区遇上唯一约束,没想到在MySQL的分区中一样会遇到这样的问题:MySQL表 ...

  5. MySQL-索引优化篇(1)_安装演示库 [前缀索引、联合索引、覆盖索引] explain参数

    文章目录 生猛干货 官方文档 安装演示数据库sakila 索引优化策略 索引列上不能使用表达式或者函数 前缀索引和索引列的选择性 前缀索引的创建 索引列的选择性 前缀索引的优缺点 联合索引 如何选择索 ...

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

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

  7. 聚集索引、辅助索引、覆盖索引、联合索引

    转载自   聚集索引.辅助索引.覆盖索引.联合索引 聚集索引(Clustered Index) 聚集索引就是按照每张表的主键构造一棵B+树,同时叶子节点中存放的即为整张表的行记录数据. 举个例子,直观 ...

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

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

  9. 简述一下索引的匹配原则_Mysql联合索引最左匹配原则

    [toc] 为什么使用联合索引 以联合索引(a,b,c)为例 建立这样的索引相当于建立了索引a.ab.abc三个索引.一个索引顶三个索引当然是好事,毕竟每多一个索引,都会增加写操作的开销和磁盘空间的开 ...

最新文章

  1. 从α到μ:DeepMind棋盘游戏AI进化史
  2. “在使用GCC时,同意Xcode / iOS许可证需要管理员权限,请通过sudo以root身份重新运行。”
  3. android上传文件php,PHP编写安卓文件上传接口
  4. 如何读取指针指向的地址空间呢?
  5. Linux文本转语音合成教程,〔教程〕使用TTS将文本转语音输出
  6. 《Python算法教程》——1.6 如果您感兴趣
  7. 《Android 第1行代码》读后感—第1章【开始启程,你的第一行Android代码】
  8. android界面设计中用的字体,APP界面设计必备!最全UI设计字体规范
  9. android 模拟器 安装,夜神安卓模拟器安装环境
  10. 对于C语言中的指针**P的理解,C语言指针**p是什么意思
  11. 入侵检测系统的原理与应用
  12. 【ANSYS APDL】如何将变量、矩阵等数据导出到TXT文件?
  13. AngularJS动态加载Controller
  14. UI设计师是一群什么样的人?
  15. Mathorcup数学建模竞赛第六届-【妈妈杯】B题:小区车位分布的评价和优化模型(附特等奖获奖论文和Java代码)
  16. idea easyYapi插件导入yapi接口使用及踩坑记录
  17. MyOS(三):软盘读写
  18. SYD8811 AES硬件加密
  19. 【智能制造】首钢智造的理论探索与实践
  20. Windows平台RTMP、RTSP播放器录像模块精细化控制

热门文章

  1. MySql学习10-----存储过程和函数
  2. linux初学者-软件安装与管理篇
  3. 20+个很棒的Android开源项目
  4. 去除android或者iOS系统默认的一些样式总结
  5. jQuery 的 ajax
  6. [TC]SRM615 div1 250 AmebaDiv1
  7. android EditText使用指南
  8. C++的隐式转换和explicit关键字
  9. Python之十点半小游戏
  10. 视频帧AI分析后编码