我试图了解索引,并从this msdn文章开始。它说,
当表存储为堆时,各个行由标识 引用由文件号组成的行标识符(RID), 数据页码和页面上的插槽。
我不知道“文件编号是什么意思, 数据页码和页面上的插槽“
有人可以澄清吗?
答案 0 :(得分:3)
使用聚簇表时,索引记录存储表记录的聚簇键(逻辑标识符)。
比如说,如果您使用这样的聚簇主表:
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>
(这当然以其真正的二进制形式看起来更紧凑)
文件不言自明,页面是文件中的8K块,插槽是页面中的记录编号(记录TOC存储在每页的标题中)
答案 1 :(得分:1)
堆是数据页的集合。页面是Microsoft SQL Server中最小的数据存储单元,包含行中的数据。一行只能驻留在一个页面中。
如果您想了解有关SQL Server内部的更多详细信息,请阅读 Kalen Delaney的Microsoft®SQLServer®2008Internals。我过去发现她的书很有帮助。