由于PostgreSQL
不支持聚簇索引,我正在考虑MSSQL
服务器。我已经阅读了article比较聚簇索引和非聚簇索引。这篇文章的主旨是(强调我的):
非聚集索引存储值和实际指针 保存该值的行。
并且
聚簇索引不需要存储指向实际行的指针 因为表中的行存储在磁盘上 与聚集索引
完全相同的顺序
当我被告知there和there时,很难支持表格数据的 物理 排序,尤其是表格时在多个驱动器之间分开。而现在,我遇到了聚集索引概念,假设数据以某种顺序存储在物理上。这就是我所困惑的。
问题:什么是聚集索引结构?它是否支持tree
- 类似于PosgtreSQL
对btree
索引进行遍历的结构?
答案 0 :(得分:5)
在SQL Server中,索引被组织为B树。索引B树中的每个页面称为索引节点。 B树的顶部节点称为根节点。索引中的底层节点称为叶节点。根节点和叶节点之间的任何索引级别统称为中间级别。在聚簇索引中,叶节点包含基础表的数据页。根级和中级节点包含保存索引行的索引页。每个索引行都包含一个键值和一个指向B树中间级页面或索引叶级别中数据行的指针。索引每个级别的页面都链接在一个双向链表中。
聚簇索引在sys.partitions中有一行,索引使用的每个分区的index_id = 1。默认情况下,聚簇索引具有单个分区。当聚簇索引具有多个分区时,每个分区都有一个B树结构,其中包含该特定分区的数据。例如,如果聚簇索引有四个分区,则有四个B树结构;每个分区一个。
表示参考。
https://technet.microsoft.com/en-us/library/ms177443(v=sql.105).aspx http://www.sqlservercentral.com/blogs/practicalsqldba/2013/03/14/sql-server-part-4-explaining-the-non-clustered-index-structure-/
答案 1 :(得分:0)