我试图了解索引并从这篇 msdn文章开始。它说,
当表存储为堆时,各个行通过引用由文件号、数据页号和页上的槽组成的行标识符 (RID) 来标识。
我不知道“文件号、数据页码和页面上的插槽”是什么意思
任何人都可以澄清一下吗?
我试图了解索引并从这篇 msdn文章开始。它说,
当表存储为堆时,各个行通过引用由文件号、数据页号和页上的槽组成的行标识符 (RID) 来标识。
我不知道“文件号、数据页码和页面上的插槽”是什么意思
任何人都可以澄清一下吗?
使用聚簇表时,索引记录存储表记录的聚簇键(逻辑标识符)。
比如说,如果您使用这样的聚集主表:
id name
1 Jonh
2 Alice
并在 上创建索引name
,索引将存储这些数据:
name row_pointer
Alice 2
John 1
如果您的表是堆,则索引将存储指向该表的物理指针:
name row_pointer
Alice <file C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\db.mdf, page 1234, slot 2>
John <file C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\db.mdf, page 1234, slot 1>
(这当然在其真正的二进制形式中看起来更紧凑)
file 不言自明,page 是文件中的 8K 块,slot 是页面中的记录号(记录 TOC 存储在每个页面的 header 中)
堆是数据页的集合。页面是 Microsoft SQL Server 中数据存储的最小单位,包含行中的数据。一行只能驻留在一页中。
如果您想了解更多关于 SQL Server 内部的详细信息,那么也许可以阅读 Kalen Delaney 的 Microsoft® SQL Server® 2008 Internals。过去我发现她的书很有帮助。