索引:0%的碎片是否暗示B树?

问题描述 投票:0回答:1

我目前正在处理Microsoft SQL Server及其索引结构。为此的数据结构是树。我现在问自己以下问题:当我重组表索引(例如主键)时,之后的结果是0%的碎片。在我看来,树是最佳设置的。这是否还意味着该结构现在是B树,即是完全平衡的树?

sql-server indexing data-structures b-tree
1个回答
0
投票

根据documentation,MS SQL聚簇索引始终是B树:

在SQL Server中,索引被组织为B树。索引B树中的每个页面称为索引节点。

因为是非聚集索引:

非聚集索引与聚集索引具有相同的B树结构

索引的碎片是指物理存储(页面)的使用状况,而不是树的平衡程度。另外,如果索引已分区,则每个分区都是B树。

[MS SQL还支持不是树的哈希索引,也没有支持堆和内存优化的表(MOT使用Bw-tree-无锁B-​​tree变体)。

还应注意,零碎不一定是一件好事。这意味着您将使用尽可能少的内存,并有可能允许更好地使用缓存(取决于比较的碎片程度)。在添加新记录或更新旧记录时,这还意味着更多工作。最好让MS SQL定期优化索引,但不要过分:)

© www.soinside.com 2019 - 2024. All rights reserved.