聚集索引与非聚集索引的区别

聚集索引和非聚集索引是SQL SERVER 数据库中的索引类型。

一、聚集索引

1.定义

聚集索引中键值的逻辑顺序决定了表中相应行的物理存储位置,因此一个表中只能有一个聚集索引。索引的逻辑顺序与相应行的物理位置一致。

2.聚集索引的适用情形
我们可以在针对以下情况建立聚集索引

  • 经常对某些列进行范围搜索,例如查询一段日期范围。
    当找到包含第一个数据的行之后,便可以确保包含后续索引值的行在物理位置上相邻。
  • 经常对查出的数据按照某一列进行排序,也可以再该列上建立聚集索引,避免在每次查询数据是都进行排序,从而节约时间成本。
  • 当索引值唯一时,使用聚集索引查找特定的行也很有效率,例如建立主键。

3.如何建立聚集索引
MySQL的InnoDB引擎
InnoDB按照主键进行聚集,当没有设置主键时,InnoDB会以唯一的非空索引来代替,如果既没有主键,也没有唯一的非空索引,InnoDB则会生成一个隐藏的主键然后在上面进行聚集。

SQL SERVER 在建立索引时,可以将索引设置为聚集索引,但是varbinary类型的字段是不可以建立索引的。

二、非聚集索引

1.定义

非聚集索引中键值的逻辑顺序与行的物理存储位置不一致

三、聚集索引和非聚集索引的适用情形

聚集索引与非聚集索引的区别_第1张图片

你可能感兴趣的:(数据库,SQL-SERVER,sql,server,聚集索引,非聚集索引)