聚集索引和非聚集索引之间的区别是什么?
当前回答
聚集索引
一个表中只能有一个聚集索引 对记录进行排序,并根据顺序进行物理存储 数据检索比非聚类索引快 不需要额外的空间来存储逻辑结构
非聚类索引
一个表中可以有任意数量的非聚集索引 请勿影响物理秩序。为数据行创建逻辑顺序,并使用指向物理数据文件的指针 数据插入/更新比聚类索引快 使用额外空间存储逻辑结构
除了这些差异,你必须知道,当表是非聚集的(当表没有聚集索引)数据文件是无序的,它使用堆数据结构作为数据结构。
其他回答
聚类索引本质上是索引列中数据的排序副本。
聚集索引的主要优点是,当查询(seek)在索引中定位数据时,不需要额外的IO来检索该数据。
维护聚集索引的开销,特别是在频繁更新的表中,可能会导致性能较差,因此最好创建非聚集索引。
聚集索引物理地存储在表上。这意味着它们是最快的,并且每个表只能有一个聚集索引。
非聚集索引单独存储,您可以拥有任意数量的索引。
最好的选择是在最常用的唯一列上设置聚集索引,通常是PK。在表中应该始终有一个精心选择的聚集索引,除非有一个非常令人信服的理由——想不出一个,但是,嘿,可能有——不这样做。
聚集索引
一个表中只能有一个聚集索引 对记录进行排序,并根据顺序进行物理存储 数据检索比非聚类索引快 不需要额外的空间来存储逻辑结构
非聚类索引
一个表中可以有任意数量的非聚集索引 请勿影响物理秩序。为数据行创建逻辑顺序,并使用指向物理数据文件的指针 数据插入/更新比聚类索引快 使用额外空间存储逻辑结构
除了这些差异,你必须知道,当表是非聚集的(当表没有聚集索引)数据文件是无序的,它使用堆数据结构作为数据结构。
聚集索引
聚集索引检索更快,插入更慢 和更新。 一个表只能有一个聚集索引。 不需要额外空间来存储逻辑结构。 确定在磁盘上存储数据的顺序。
非聚簇索引
非聚集索引在检索数据时较慢,在检索数据时较快 插入和更新。 一个表可以有多个非聚集索引。 需要额外的空间来存储逻辑结构。 对磁盘上存储数据的顺序没有影响。
聚集索引
一个表只能有一个聚集索引。 通常在主键上进行。 聚集索引的叶节点包含数据页。
非聚簇索引
一个表只能有249个非聚集索引(直到sql version 2005的后续版本支持多达999个非聚集索引)。 通常在任意键上。 非聚集索引的叶节点不包含数据页。相反,叶节点包含索引行。
推荐文章
- 确定记录是否存在的最快方法
- 从现有模式生成表关系图(SQL Server)
- 我如何循环通过一组记录在SQL Server?
- 数据库和模式的区别
- 如何在SQL Server中一次更改多个列
- 外键约束可能导致循环或多条级联路径?
- 如何选择每一行的列值不是独特的
- nvarchar(max)非文本
- 在SQL Server 2008 R2中重命名数据库时出错
- 将数据复制到另一个表中
- 如何在SQL中选择表的最后一条记录?
- 修改列,添加默认约束
- 在存储过程中使用“SET XACT_ABORT ON”有什么好处?
- 如何检查SQL Server文本列是否为空?
- 如何创建一个SQL Server函数“连接”多行从一个子查询到一个单独的分隔字段?