• 技术文章 >数据库 >MySQL

    mysql中什么是覆盖索引

    FXLFXL2020-08-29 11:37:07原创4118

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

    (推荐教程:MySQL教程

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

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

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

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

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

    限制:

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

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

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

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

    专题推荐:mysql 覆盖索引
    上一篇:无法启动mysql57服务怎么办 下一篇:如何在mysql数据库中创建一张表

    相关文章推荐

    • mysql常见索引的区别是什么?• 怎样查看mysql创建的索引

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网