网站首页 > 资源文章 正文
什么叫做覆盖索引?
- 解释一: 就是select的数据列只用从索引中就能够取得,不必从数据表中读取,换句话说查询列要被所使用的索引覆盖。
- 解释二: 索引是高效找到行的一个方法,当能通过检索索引就可以读取想要的数据,那就不需要再到数据表中读取行了。如果一个索引包含了(或覆盖了)满足查询语句中字段与条件的数据就叫做覆盖索引。
- 解释三:是非聚集组合索引的一种形式,它包括在查询里的Select、Join和Where子句用到的所有列(即建立索引的字段正好是覆盖查询语句[select子句]与查询条件[Where子句]中所涉及的字段,也即,索引包含了查询正在查找的所有数据)。
不是所有类型的索引都可以成为覆盖索引。覆盖索引必须要存储索引的列,而哈希索引、空间索引和全文索引等都不存储索引列的值,所以MySQL只能使用B-Tree索引做覆盖索引
当发起一个被索引覆盖的查询(也叫作索引覆盖查询)时,在EXPLAIN的Extra列可以看到“Using index”的信息。
注:遇到以下情况,执行计划不会选择覆盖查询。
- select选择的字段中含有不在 索引 中的字段 ,即索引没有覆盖全部的列。
- where条件中不能含有对索引进行like的操作。
mysql聚集索引,辅助索引,联合索引,覆盖索引
聚集索引:
一个表中只能有一个,聚集索引的顺序与数据真实的物理存储顺序一致。查询速度贼快,聚集索引的叶子节点上是该行的所有数据 ,数据索引能加快范围查询(聚集索引的顺序和数据存放的逻辑顺序一致)。主键!=聚集索引。
辅助索引(非聚集索引):
一个表中可以有多个,叶子节点存放的不是一整行数据,而是键值,叶子节点的索引行中还包含了一个'书签',这个书签就是指向聚簇索引的一个指针,从而在聚簇索引树中找到一整行数据。
联合索引:
就是由多列组成的的索引。遵循最左前缀规则。对where,order by,group by 都生效。
覆盖索引:
指从辅助索引中就能获取到需要的记录,而不需要查找聚簇索引中的记录。使用覆盖索引的一个好处是因为辅助索引不包括一条记录的整行信息,所以数据量较聚集索引要少,可以减少大量io操作。
聚集索引与辅助索引的区别:
叶子节点是否存放的为一整行数据
最左前缀规则:
假设联合索引由列(a,b,c)组成,则一下顺序满足最左前缀规则:a、ab、abc;selece、where、order by 、group by都可以匹配最左前缀。其它情况都不满足最左前缀规则就不会用到联合索引。
猜你喜欢
- 2025-01-03 道不尽的冬日毕棚沟,太“_____”啦!
- 2025-01-03 真诚,是最贵的人品
- 2025-01-03 赏美文丨听听那冷雨(节选) 作者:余光中 诵读:王卉
- 2025-01-03 最全软件测试笔试题,建议收藏
- 2025-01-03 2022晚风太惬意的朋友圈唯美句子
- 2025-01-03 软件生命周期管理-精华版
- 2025-01-03 每日一句,正能量的励志短句
- 2025-01-03 日积月累 ▏ 描写雪的好词好句好段集萃
- 2025-01-03 软件测试工程师的基础必备技能:功能测试解读
- 2025-01-03 成吉思汗最有英雄气概的名言,仅16个字,充满智慧,值得学习
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 电脑显示器花屏 (79)
- 403 forbidden (65)
- linux怎么查看系统版本 (54)
- 补码运算 (63)
- 缓存服务器 (61)
- 定时重启 (59)
- plsql developer (73)
- 对话框打开时命令无法执行 (61)
- excel数据透视表 (72)
- oracle认证 (56)
- 网页不能复制 (84)
- photoshop外挂滤镜 (58)
- 网页无法复制粘贴 (55)
- vmware workstation 7 1 3 (78)
- jdk 64位下载 (65)
- phpstudy 2013 (66)
- 卡通形象生成 (55)
- psd模板免费下载 (67)
- shift (58)
- localhost打不开 (58)
- 检测代理服务器设置 (55)
- frequency (66)
- indesign教程 (55)
- 运行命令大全 (61)
- ping exe (64)
本文暂时没有评论,来添加一个吧(●'◡'●)