小编das*_*ssd的帖子

为什么非唯一非聚集索引的根级和中间级另外存储行 ID?

我正在阅读 Dmitry Korotkevich 的《Pro SQL Server Internals》,在第 2 章(表和索引:内部结构和访问方法)中我发现了以下内容:

与聚集索引一样,非聚集索引的中间级和根级从它们引用的级别开始每页存储一行。该行由物理地址和页面中键的最小值组成。另外,对于非唯一索引,它还存储该行的row-id。

在非叶索引页上拥有行 ID 有何意义?这对于 UNIQUE 索引来说是有意义的。因此,如果您已经在根或任何中间级别中找到了一个值,请使用该行 ID 并且不要“加载”叶级别的页面,因为它是唯一的(不会是任何其他匹配项)。由于不需要加载额外的页面,因此节省了大量的处理时间。在非唯一索引中,无论如何都必须在叶级“加载”页面,因为可能存在多个匹配项。那么非唯一索引中的非叶页上的行 ID 有何意义呢?

我希望我已经很好地解释了我不清楚的地方。

sql-server

5
推荐指数
1
解决办法
471
查看次数

标签 统计

sql-server ×1