技术文章 > 数据库 > MySQL > 正文

mysql中什么是覆盖索引

FXL

如果一个索引包含(或覆盖)所有需要查询的字段的值,称为‘覆盖索引’。

(推荐教程:MySQL教程

覆盖索引是一种非常强大的工具,能大大提高查询性能,只需要读取索引而不需要读取数据,有以下优点: 

1、索引项通常比记录要小,所以MySQL访问更少的数据。

2、索引都按值得大小存储,相对于随机访问记录,需要更少的I/O。

3、数据引擎能更好的缓存索引,比如MyISAM只缓存索引。

4、覆盖索引对InnoDB尤其有用,因为InnoDB使用聚集索引组织数据,如果二级索引包含查询所需的数据,就不再需要在聚集索引中查找了。

限制:

1、覆盖索引也并不适用于任意的索引类型,索引必须存储列的值。

2、Hash和full-text索引不存储值,因此MySQL只能使用BTree。

3、不同的存储引擎实现覆盖索引都是不同的,并不是所有的存储引擎都支持覆盖索引。

4、如果要使用覆盖索引,一定要注意SELECT列表值取出需要的列,不可以SELECT * ,因为如果将所有字段一起做索引会导致索引文件过大,查询性能下降。

免费视频教程
本文原创发布python学习网,转载请注明出处,感谢您的尊重!
相关文章
 mysql常见索引的区别是什么?
 mongodb 建立不了索引
 mysql 主键是索引吗
 怎样查看mysql创建的索引
相关视频章节
 约束与索引的概述
 索引失效行锁变表锁
 索引操作
 时间日期索引
视频教程分类