聚集索引和非聚集索引之间的区别是什么?
当前回答
聚集索引实际上描述了记录在磁盘上物理存储的顺序,因此只能有一个聚集索引。
非聚集索引定义的逻辑顺序与磁盘上的物理顺序不匹配。
其他回答
聚类基本上意味着数据在表中的物理顺序。这就是为什么每个表只能有一个。
非聚集意味着它“只是”一个逻辑顺序。
聚类索引本质上是索引列中数据的排序副本。
聚集索引的主要优点是,当查询(seek)在索引中定位数据时,不需要额外的IO来检索该数据。
维护聚集索引的开销,特别是在频繁更新的表中,可能会导致性能较差,因此最好创建非聚集索引。
聚集索引
每张桌子只有一个 由于数据按索引顺序物理存储,因此读取速度比非集群更快
非聚类索引
每张表可以使用多次吗 插入和更新操作比聚集索引更快
当选择使用索引的字段的数据时,这两种类型的索引都将提高性能,但会降低更新和插入操作的速度。
由于插入和更新较慢,聚集索引应该设置在一个字段上,通常是增量的,即Id或时间戳。
SQL Server通常只使用选择性高于95%的索引。
聚集索引实际上描述了记录在磁盘上物理存储的顺序,因此只能有一个聚集索引。
非聚集索引定义的逻辑顺序与磁盘上的物理顺序不匹配。
聚集索引
一个表中只能有一个聚集索引 对记录进行排序,并根据顺序进行物理存储 数据检索比非聚类索引快 不需要额外的空间来存储逻辑结构
非聚类索引
一个表中可以有任意数量的非聚集索引 请勿影响物理秩序。为数据行创建逻辑顺序,并使用指向物理数据文件的指针 数据插入/更新比聚类索引快 使用额外空间存储逻辑结构
除了这些差异,你必须知道,当表是非聚集的(当表没有聚集索引)数据文件是无序的,它使用堆数据结构作为数据结构。
推荐文章
- 在SQL server查询中将NULL替换为0
- 在SQL中修改表的模式名
- 如何得到累计和
- 如何在SQL Server 2005的一条语句中更新两个表?
- 如何创建临时表与SELECT * INTO tempTable从CTE查询
- 在SQL Server的选择语句中使用带TOP的变量,而不是动态的
- SQL变量保存整数列表
- MySQL索引的最佳实践是什么?
- 在SQL中转换月号到月名函数
- 改变一个varchar列的最大长度?
- 如何在SQL中从DateTime格式获取时间?
- 在MySQL中使用INDEX和KEY有什么区别?
- 暂时关闭约束(MS SQL)
- WHERE子句中的IF子句
- 如何在SSMS中从ntext或nvarchar(max)查看所有文本?