《MySql》--覆盖索引
2017-01-24 16:27
295 查看
覆盖索引又可以称为索引覆盖。
解释一: 就是select的数据列只用从索引中就能够取得,不必从数据表中读取,换句话说查询列要被所使用的索引覆盖。解释二: 索引是高效找到行的一个方法,当能通过检索索引就可以读取想要的数据,那就不需要再到数据表中读取行了。如果一个索引包含了(或覆盖了)满足查询语句中字段与条件的数据就叫做覆盖索引。
解释三:是非聚集组合索引的一种形式,它包括在查询里的Select、Join和Where子句用到的所有列(即建立索引的字段正好是覆盖查询语句[select子句]与查询条件[Where子句]中所涉及的字段,也即,索引包含了查询正在查找的所有数据)。
索引覆盖举例
索引覆盖是指建索引的字段正好是覆盖查询条件中所涉及的字段,这里需要注意的是,必须是从第一个开始覆盖,比如:索引字段 | 条件字段 | 有没有覆盖 |
---|---|---|
a,b,c | a,b | 覆盖了 |
a,b,c | b,c | 没有被覆盖 |
例子: select<字段A,B….> from <数据表 T> where <条件字段C>。在MySQL中建立覆盖索引采用Create index idx on T(C,A,B),建立组合索引时,字段的顺序很重要,要将条件字段C放在组合索引的第一位,把它做为在索引的上层结构的主要排序对象,且仅有它包含统计数据,也就是非子叶层查找出符合的记录,然后在存放有其他字段记录的子叶层读取所需要的数据。
小结
索引覆盖可以大大提高查询速度,在大数据量的时候尤其明显。相关文章推荐
- MYSQL的全表扫描,主键索引(聚集索引、第一索引),非主键索引(非聚集索引、第二索引),覆盖索引四种不同查询的分析
- mysql覆盖索引
- mysql覆盖索引
- Mysql性能优化案例研究 - 覆盖索引和SQL_NO_CACHE
- 【MySQL】性能优化之 覆盖索引
- mysql高效索引之覆盖索引
- mysql 全表扫描、全索引扫描、索引覆盖(覆盖索引)
- MySQL 覆盖索引
- mysql 优化(4)索引覆盖和最优索引
- mysql覆盖索引
- Mysql覆盖索引
- [MySQL] 索引与性能(3)- 覆盖索引
- MYSQL的全表扫描,主键索引(聚集索引、第一索引),非主键索引(非聚集索引、第二索引),覆盖索引四种不同查询的分析
- MySQL覆盖索引
- MySql中不等号的一点疑问:从为什么不等号有时也会用到索引说到“覆盖索引”
- 高性能的MySQL(5)索引策略-覆盖索引与索引排序
- 【MySQL】性能优化之 覆盖索引
- Mysql性能优化案例研究-覆盖索引和SQL_NO_CACHE
- Mysql性能优化案例 - 覆盖索引分享
- MySQL笔记(覆盖索引)