大家请看--聚集索引与非聚集索引的解释
聚集索引
每个表中只能有一个聚 在 SQL Server 文档中通常 树的下半部分是与表相关的 | 集索引。物理原因很简单。尽管 称为非叶级)与非聚集索引 B 实际的 8 KB 数据页。这里暗含 | 聚集索引 B 树结构的上半部分( 树的结构相似,但是聚集索引 B 着两种性能: |
通过聚集索引基于关键字搜索来检索 不连续改变)就可以获得相关的数据页, | SQL 数据时不需要指针跳动(类似于硬盘上位置的 因为叶级聚集索引已经是相关的数据页。 |
聚集索引的叶级按照组 据页,这意味着整个表的行 据聚集索引的值从这个表中 使用的是连续磁盘 I/O(除 PAD_INDEX 的重要性”中讨 列来提取表中的聚集索引很 | 成聚集索引的列排序。因为聚集 数据在物理上按照聚集索引确定 提取大量行时,这种排列提供了 非该表上发生了页拆分,我们将 论这个问题)。这就是根据执行 重要的原因。 | 索引的叶级包含表的实际 8 KB 数 的顺序排列在磁盘驱动器上。当根 一种潜在的 I/O 性能优势,因为 在后面的“FILLFACTOR 和 范围扫描检索大量的行时所使用的 |
非聚集索引 |
如果要根据键值从大型 用。以前已提到过,非聚集 包含组成该索引的列中的所 个索引 B 树,直到在索引 分,则会发生指针跳动。该 及它相应的索引 B 树很大 个 8 KB 数据页,则对 I/O 。如果某个 SQL 查询涉及 次指针跳动。这些指针跳动 SQL 查询,而聚集索引更适 | SQL Server 表提取具有良好选 索引是由 8 KB 索引页组成的 B 有数据。当用非聚集索引检索表 叶级找到一个与键值匹配的值。 指针跳动可能需要在磁盘上进行 ,甚至可能要求从另一个磁盘中 性能的影响比较小,因为只须 到要用非聚集索引进行搜索,那 可以解释为什么非聚集索引更适 合于要求返回许多行的查询。 | 择性的少数几行,非聚集索引最有 树。索引页的 B 树的底部或叶级 中与键值匹配的信息时,将搜索整 如果需要的列不是索引组成的一部 一个不连续 I/O 操作。如果表以 读取数据。如果多个指针指向同一 将该数据页读入数据高速缓存一次 么对于所返回的每一行,均需要一 合于只返回表中一行或几行的 |