【发布时间】:2011-01-23 08:28:48
【问题描述】:
只是为了面试问题的知识,以及我的知识。
SQL - Cluster 和 Non-cluster index 之间的区别?
【问题讨论】:
标签: sql indexing clustered-index non-clustered-index
只是为了面试问题的知识,以及我的知识。
SQL - Cluster 和 Non-cluster index 之间的区别?
【问题讨论】:
标签: sql indexing clustered-index non-clustered-index
描述两者的链接。
http://www.mssqlcity.com/FAQ/General/clustered_vs_nonclustered_indexes.htm
http://www.sql-server-performance.com/articles/per/index_data_structures_p1.aspx
区别在于表中记录相对于索引的物理顺序。聚集索引在表中以这种方式进行物理排序。
【讨论】:
聚类索引
1 聚簇索引是一种由列和行组成的表。
2 簇索引存在于物理层面
3 它在物理级别对数据进行排序
4 它适用于整个表格
5 有一个排序数据形式的整表
6 一张表只能包含一个簇索引
非聚类索引
1 非聚集索引是关于表的报告形式。
2 它们不是在物理级别而是在逻辑级别创建的
3 它不对物理级别的数据进行排序
4 一张表有 255 个非聚集索引
5 一张表有很多非聚集索引。
6 它按数据顺序工作
【讨论】:
聚集索引
非聚集索引
当使用使用索引的字段选择数据时,这两种类型的索引都会提高性能,但将减慢更新和插入操作。
不同之处在于,聚集索引对于任何给定的表都是唯一的,并且我们在一张表上只能有一个聚集索引。聚集索引的叶级是实际数据,在聚集索引的情况下,数据会被重新使用。 而在非聚集索引中,叶级实际上是指向行中数据的指针,因此我们可以在数据库上拥有尽可能多的非聚集索引。
【讨论】:
聚簇索引和非聚簇索引的区别是:
【讨论】:
索引用于加速 SQL Server 中的查询过程,从而提高性能。它们类似于教科书索引。在教科书中,如果您需要转到特定章节,请转到索引,找到该章节的页码并直接转到该页面。如果没有索引,查找所需章节的过程会非常缓慢。
这同样适用于数据库中的索引。如果没有索引,DBMS 必须遍历表中的所有记录才能检索所需的结果。这个过程称为表扫描,非常慢。另一方面,如果你创建索引,数据库会先到那个索引,然后直接检索对应的表记录。
SQL Server 中有两种类型的索引:
聚集索引
聚集索引定义了数据在表中的物理存储顺序。表数据只能以唯一方式排序,因此每个表只能有一个聚集索引。在 SQL Server 中,主键约束会自动在该特定列上创建聚集索引。
非聚集索引
非聚集索引不对表内的物理数据进行排序。实际上,非聚集索引存储在一个地方,而表数据存储在另一个地方。这类似于一本教科书,其中书籍内容位于一个地方,而索引位于另一个地方。这允许每个表有多个非聚集索引。
【讨论】: