我正在阅读 Dmitry Korotkevich 的《Pro SQL Server Internals》,在第 2 章(表和索引:内部结构和访问方法)中我发现了以下内容:
与聚集索引一样,非聚集索引的中间级和根级从它们引用的级别开始每页存储一行。该行由物理地址和页面中键的最小值组成。另外,对于非唯一索引,它还存储该行的row-id。
在非叶索引页上拥有行 ID 有何意义?这对于 UNIQUE 索引来说是有意义的。因此,如果您已经在根或任何中间级别中找到了一个值,请使用该行 ID 并且不要“加载”叶级别的页面,因为它是唯一的(不会是任何其他匹配项)。由于不需要加载额外的页面,因此节省了大量的处理时间。在非唯一索引中,无论如何都必须在叶级“加载”页面,因为可能存在多个匹配项。那么非唯一索引中的非叶页上的行 ID 有何意义呢?
我希望我已经很好地解释了我不清楚的地方。
sql-server ×1