zoukankan      html  css  js  c++  java
  • 聚集索引与非聚集索引

    1、概念

    聚集索引就是以主键创建的索引,非聚集索引就是以非主键创建的索引

    2、区别

    (1)      聚集索引在叶子节点存储的是表中的数据,非聚集索引在叶子节点存储的是主键和索引列。使用非聚集索引查询出来的数据时,拿到叶子上的主键再去查找想要的数据。(拿到主键再查找这个过程叫回表)。

    (2)      非聚集索引也叫做二级索引,在建立的时候也未必是单列的,可以多个列来创建索引。创建多个单列(非聚集)索引的时候,会生成多个索引树(所以过多创建索引会占用磁盘空间)

    (3)      在创建多列索引中涉及到一种特殊的索引—》覆盖索引。覆盖索引就是把要查询出的列和索引是对应的,不做回表操作。如果不是聚集索引,叶子节点存储的是主键+列值,最终还是要回表的,也就是需要通过主键再查找一次,这样就会比较慢。

    (4)      比如创建了索引{username,age},查询数据的时候:select username,age from user where username =“叶子” and age =20。这个是走索引的,要查询出的列的叶子节点都存在。所以不需要回表

    欢迎批评指正,提出问题,谢谢!
  • 相关阅读:
    【费用流】【CODEVS】1227 方格取数2
    【CODEVS】1034 家园
    【BZOJ】1066: [SCOI2007]蜥蜴
    【最大流】【CODEVS】1993 草地排水
    【HDU】2191 多重背包问题
    【TYVJ】1520 树的直径
    【BZOJ】1984 月下“毛景树”
    【BZOJ】1588: [HNOI2002]营业额统计
    【NOI】2004 郁闷的出纳员
    【POJ】2892 Tunnel Warfare
  • 原文地址:https://www.cnblogs.com/xxeleanor/p/14360610.html
Copyright © 2011-2022 走看看