美文网首页
覆盖索引

覆盖索引

作者: wwwxi | 来源:发表于2017-09-13 18:12 被阅读0次

    覆盖索引

    基础解释

    索引是高效找到行的一个方法,但是一般数据库也能使用索引找到一个列的数据,  
    因此它不必读取整个行。毕竟索引叶子节点存储了它们索引的数据;当能通过读  
    取索引就可以得到想要的数据,那就不需要读取行了。一个索引包含了(或覆盖了)  
    满足查询结果的数据就叫做覆盖索引。  
    ps:
    它包括在查询里的Select、Join和Where子句用到的所有列(即建索引的字段  
    正好是覆盖查询条件中所涉及的字段,也即,索引包含了查询正在查找的数据)。
    

    查看方法

    explain sql语句:  
      extra  (use index)有这个说明是覆盖索引
    

    使用条件

    索引必须存储列的值   
    
    ps:Hash 和full-text索引不存储值,因此MySQL只能使用B-TREE。
    并且不同的存储引擎实现覆盖索引都是不同的。并不是所有的存储引擎  
    都支持它们。如果要使用覆盖索引。一定要注意SELECT 列表值取出需  
    要的列。不可以是SELECT * ,因为如果将所有字段一起做索引会导致
    索引文件过大。查询性能下降。不能为了利用覆盖索引而这么做。
    

    优点

    MySQL只需要通过索引就可以返回查询所需要的数据,而不必在查到索  
    引之后进行回表操作,减少IO,提高了效率

    相关文章

      网友评论

          本文标题:覆盖索引

          本文链接:https://www.haomeiwen.com/subject/juslsxtx.html