Mysql 覆盖索引
2013-10-23 15:24
246 查看
通常我们都会根据查询的WHERE条件来创建合适的索引,但是MYSQL也可以使用索引来直接获取数据而不用再去查表,如果一个索引包括所有需要查询的字段的值,我们称之为“覆盖索引”。
覆盖索引是一个非常好的工具,能极大的提高性能:
由于索引条目远远小于数据行大小,所以如果只需要读取索引,那MYSQL可以减少访问量,这对缓存的负载非常重要。
因为索引是按照顺序存储的,所以对于I/O密集型的范围查询会比随机从磁盘读取每一行数据I/O要少得多。
不是所有的类型的索引都可以成为覆盖索引,覆盖索引必须要存储索引列的值,而哈希索引、空间索引、全文索引等不存储索引列的值,所以MYSQL只能使用B-TREE索引做覆盖索引。
当发起一个索引覆盖的查询,在EXPLAIN的Extra列可以看到“Using index”的信息。
覆盖索引是一个非常好的工具,能极大的提高性能:
由于索引条目远远小于数据行大小,所以如果只需要读取索引,那MYSQL可以减少访问量,这对缓存的负载非常重要。
因为索引是按照顺序存储的,所以对于I/O密集型的范围查询会比随机从磁盘读取每一行数据I/O要少得多。
不是所有的类型的索引都可以成为覆盖索引,覆盖索引必须要存储索引列的值,而哈希索引、空间索引、全文索引等不存储索引列的值,所以MYSQL只能使用B-TREE索引做覆盖索引。
当发起一个索引覆盖的查询,在EXPLAIN的Extra列可以看到“Using index”的信息。
相关文章推荐
- MySQL笔记(覆盖索引)
- MySQL SQL优化之覆盖索引
- MySql中不等号的一点疑问:从为什么不等号有时也会用到索引说到“覆盖索引”
- Mysql性能优化案例 - 覆盖索引分享
- 《MySql》--覆盖索引
- MySQL的联合索引和覆盖索引
- MySQL_索引_mysql高效索引之覆盖索引
- Mysql-索引覆盖
- mysql优化-----索引覆盖
- 高性能的MySQL(5)索引策略-覆盖索引与索引排序
- MySQL索引优化——覆盖索引
- MySQL 覆盖索引
- [MySQL] 索引与性能(3)- 覆盖索引
- mysql覆盖索引
- MySQL覆盖索引
- sql优化之:数据库索引创建原则,or/in/union与索引优化,聚集索引/非聚集索引/联合索引/索引覆盖,MySQL冗余数据的三种方案,MySQL双主一致性架构优化(来源:架构师之路)
- MySql(三): 覆盖索引( Covering Index )
- MySql的覆盖索引
- mysql 优化(4)索引覆盖和最优索引
- mysql延迟查询, 覆盖索引使用例子