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