品易云推流 关闭
文章详情页
文章 > MySQL > mysql中什么是覆盖索引

mysql中什么是覆盖索引

mysql 覆盖索引

头像

FXL

2020-08-29 11:37:074284浏览 · 0收藏 · 0评论

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

(推荐教程:MySQL教程

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

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

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

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

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

限制:

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

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

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

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

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

底部广告图