聚集索引与非聚集索引

1、概念

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

2、区别

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

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

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

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

posted @ 2021-02-02 10:28  Eleanor123  阅读(443)  评论(0编辑  收藏  举报