St.*_*rio 9 sql sql-server indexing
由于PostgreSQL不支持聚簇索引,我正在考虑MSSQL服务器.我已经阅读了比较聚簇索引和非聚簇索引的文章.文章的要点是(强调我的):
非聚簇索引存储值和指向包含该值的实际行的指针.
和
由于表中的行以与聚簇索引完全相同的顺序存储在磁盘上,因此聚簇索引不需要存储指向实际行的指针
据我所知,有和没有是很困难的,支持物理表的数据进行排序,特别是如果表是多个驱动器之间的分裂.现在,我遇到了聚集索引概念,假设数据以某种顺序存储在物理上.这就是我所困惑的.
问题:什么是聚簇索引结构?它支持tree式的结构穿越过来,像PosgtreSQL做了btree索引?
在SQL Server中,索引被组织为B树。索引B树中的每个页面称为索引节点。B树的顶部节点称为根节点。索引中节点的最底层称为叶节点。根节点和叶节点之间的任何索引级别统称为中间级别。在聚簇索引中,叶节点包含基础表的数据页。根节点和中间层节点包含保存索引行的索引页。每个索引行都包含一个键值和一个指向B树中的中间级页面或索引的叶级中的数据行的指针。索引的每个级别中的页面都在双向链接列表中链接。
聚集索引在sys.partitions中有一行,索引所使用的每个分区的index_id = 1。默认情况下,聚集索引只有一个分区。当聚集索引具有多个分区时,每个分区都有一个B树结构,其中包含该特定分区的数据。例如,如果聚簇索引有四个分区,则有四个B树结构;每个分区一个。
供参考
https://technet.microsoft.com/zh-CN/library/ms177443(v=sql.105).aspx http://www.sqlservercentral.com/blogs/practicalsqldba/2013/03/14/sql-server-第4部分:解释非聚集索引结构/
| 归档时间: |
|
| 查看次数: |
3377 次 |
| 最近记录: |