是将堆视为索引结构,还是严格说是没有索引的表结构?


Answers:


9

从MSDN- 表和索引组织

“ SQL Server表使用以下两种方法之一来组织分区中的数据页:

  • 聚集表是具有聚集索引的表。

数据行基于聚簇索引键按顺序存储。聚集索引被实现为B树索引结构,该结构基于行的聚集索引键值支持对行的快速检索。索引的每个级别中的页面(包括叶级别中的数据页面)都在双向链接列表中链接。但是,可以使用键值从一个级别导航到另一个级别。

  • 堆是没有聚簇索引的表。

数据行不以任何特定顺序存储,并且数据页的顺序没有特定顺序。数据页未在链接列表中链接。”

-SQL Server优化

“根据定义,堆表是没有任何聚集索引的表。基于堆的表的不同页面占据磁盘上不同的非连续区域,并且它们没有以任何方式链接在一起。”

相对于- 聚集索引结构:“在SQL Server中,索引被组织为B树。索引B树中的每个页面称为索引节点。B树的顶部节点称为根节点。索引中节点的最底层称为叶节点,根节点与叶节点之间的任何索引级别统称为中间级别。在聚簇索引中,叶节点包含基础表的数据页。中间级节点包含保存索引行的索引页,每个索引行包含一个键值和一个指向B树中的中间级页或索引的叶级中的数据行的指针。该索引被链接到一个双向链接列表中。”

其他参考:


10

索引表示行有数据顺序。鉴于没有使用任何这样的顺序创建堆并且也不维护任何顺序,因此这只是存储表数据的一种方法。

有一些示例(例如dm_db_index_physical_stats)在其中指定堆,但您必须输入索引ID0。尽管这似乎与我刚才所说的相矛盾,但我认为这只是简化API及其简化的神奇值。用法; 而已。


4

没有聚集索引的表结构。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.