我目前正在处理 Microsoft SQL Server 及其索引结构。用于此的数据结构是树。
当我重新组织一个表索引(例如主键)时,之后的结果是 0% 碎片。然后,在我看来,树是最佳设置的。这是否也意味着结构现在是B-tree,即是一个完全平衡的树?
B树中的“B”不一定代表“平衡”。这取决于你问谁。参见例如这个。通常情况下,术语会退化(随着时间的推移)。
所有 SQL Server“行索引”(与 SQL Server 中的其他类型的索引相反,如哈希、列存储、全文、XML(在某种程度上)和地理空间索引)都是 B 树索引。从根到所有叶页的深度(页数)相同,从某种意义上说,它们始终是“平衡的”。
这与我们通常在 SQL Server 世界中谈论的两种碎片类型中的任何一种都没有关系:外部(在跟随链表时来回跳转)或内部(非完整页面)。
有人可能会争辩说 SQL Server 中的聚集索引应该被视为 B+ 树,因为叶子“具有数据”,但我再次怀疑您是否会找到有关如何使用这些术语的权威参考。