什么情况使用聚簇(聚集)索引

索引包括聚簇索引和非聚簇索引,什么情况下使用聚簇索引?什么情况下使用非聚簇索引?
最新回答
-凉薄少年葬空城

2026-03-30 21:23:42

聚簇是根据码值找到数据的物理存储位置,从而达到快速检索数据的目的。聚簇索引的顺序就是数据的物理存储顺序,叶节点就是数据节点。非聚簇索引的顺序与数据物理排列顺序无关,叶节点仍然是索引节点,只不过有一个指针指向对应的数据块。一个表最多只能有一个聚簇索引。 但是建立聚簇索引的空间耗费比较大 对以后的增加删除的影响比较大.一般都不用
恭候春夏的轮替

2026-03-17 14:39:50

在SQL Server中,索引是按B-Tree树结构进行组织的。索引B树中的每一页称为一个索引节点。B-Tree树的顶端节点称为根节点。索引中的底层节点称为叶节点。根节点与叶节点之间的任何索引级别统称为中间级。在聚簇索引中,叶节点包含基础表的数据页。根节点和叶节点包含含有索引行的索引页。每个索引行包含一个键值和一个指针,该指针指向B-Tree树上的某一中间级页或叶级索引中的某个数据行。每级索引中的页均被链接在双向链接列表中。
例如对于聚簇索引Employee中的root_page列指向该聚簇索引某个特定分区的顶部。SQL Server将在索引中向下移动以查找与某个聚簇索引键对应的行。为了查找键的范围,SQL Server将在索引中移动以查找该范围的起始键值,然后用向前或向后指针在数据页中进行扫描。

非聚簇索引的数据存储在一个位置,索引存储在另一个位置,索引带有指针指向数据的存储位置。索引中的项目按索引值的顺序存储,而表中的信息按另一种顺序存储。
非聚簇索引与聚簇索引具有相同的B-Tree结构,但是它与聚簇索引有两个重大区别:
 数据行不按非聚簇索引键的顺序排序和存储。
 非聚簇索引的叶层不包含数据页,相反,叶节点包含索引行。每个索引行包含非聚集簇值以及一个或多个行定位器,这些行定位器指向有该键值的数据行(如果索引不惟一,则可能是多行)。