mysql覆盖索引
2017-09-04 16:00
232 查看
被鄙视了!写了熟悉mysql,居然不知道什么是覆盖索引。。。。
语法:
Alter table XXX add index mm(aa,bb);
一个包含查询所需的字段的索引称为 covering index 覆盖索引。MySQL只需要通过索引就可以返回查询所需要的数据,而不必在查到索引之后进行回表操作,减少IO,提供效率。
当你对一个sql 使用explain statement 查看一个sql的执行计划时,在EXPLAIN的Extra列出现Using Index提示时,就说明该select查询使用了覆盖索引。
覆盖索引(covering index),MySQL只需要通过索引就可以返回查询所需要的数据,而不必在查到索引之后再去查询数据,所以那是相当的快!!但是同时也要求所查询的字段必须被索引所覆盖到,在Explain的时候,输出的Extra信息中如果有“Using Index”,就表示这条查询使用了覆盖索引。
【覆盖索引的限制】
遇到以下情况,执行计划不会选择覆盖查询:
1select选择的字段中含有不在索引中的字段 ,也即索引没有覆盖全部的列。
2 where 条件中不能含有对索引进行like的操作。
语法:
Alter table XXX add index mm(aa,bb);
一个包含查询所需的字段的索引称为 covering index 覆盖索引。MySQL只需要通过索引就可以返回查询所需要的数据,而不必在查到索引之后进行回表操作,减少IO,提供效率。
当你对一个sql 使用explain statement 查看一个sql的执行计划时,在EXPLAIN的Extra列出现Using Index提示时,就说明该select查询使用了覆盖索引。
覆盖索引(covering index),MySQL只需要通过索引就可以返回查询所需要的数据,而不必在查到索引之后再去查询数据,所以那是相当的快!!但是同时也要求所查询的字段必须被索引所覆盖到,在Explain的时候,输出的Extra信息中如果有“Using Index”,就表示这条查询使用了覆盖索引。
【覆盖索引的限制】
遇到以下情况,执行计划不会选择覆盖查询:
1select选择的字段中含有不在索引中的字段 ,也即索引没有覆盖全部的列。
2 where 条件中不能含有对索引进行like的操作。
相关文章推荐
- mysql覆盖索引
- 关于mysql索引覆盖的实例
- MySQL之高效覆盖索引
- MySQL 覆盖索引
- [MySQL] 索引与性能(3)- 覆盖索引
- Mysql性能优化案例 - 覆盖索引分享
- mysql高效索引之覆盖索引
- 【MySQL】性能优化之 覆盖索引
- mysql延迟查询, 覆盖索引使用例子
- Mysql性能优化案例研究-覆盖索引和SQL_NO_CACHE
- Mysql性能优化案例 - 覆盖索引分享
- MYSQL的全表扫描,主键索引(聚集索引、第一索引),非主键索引(非聚集索引、第二索引),覆盖索引四种不同查询的分析
- 《MySql》--覆盖索引
- 高性能的MySQL(5)索引策略-覆盖索引与索引排序
- mysql覆盖索引
- MySql中不等号的一点疑问:从为什么不等号有时也会用到索引说到“覆盖索引”
- mysql 全表扫描、全索引扫描、索引覆盖(覆盖索引)
- 因为前缀索引问题导致mysql无法使用覆盖索引
- Mysql 覆盖索引
- MySQL笔记(覆盖索引)