Stellen Sie sich einen B-Tree-Index für einen Wert vor, der immer monoton ansteigt, z. B. eine Spalte vom Typ IDENTITY. Bei einer herkömmlichen B-Tree-Implementierung wird ein Knoten, wenn er voll ist, zu 50% / 50% aufgeteilt, und wir erhalten einen B-Tree, in dem (fast) alle Knoten nur zu 50% voll sind.
Ich weiß, dass Oracle erkennt, wenn ein Wert ständig steigt, und in diesen Fällen führt Oracle stattdessen eine Aufteilung von 90% / 10% durch. Auf diese Weise sind (fast) alle Knoten zu 90% voll, und für diese häufig vorkommenden Fälle wird eine weitaus bessere Seitennutzung erzielt.
Ich konnte keine Dokumentation für eine ähnliche Funktion in SQL Server finden. Ich habe jedoch zwei Experimente durchgeführt, bei denen ich N zufällige Ganzzahlen und N aufeinanderfolgende Ganzzahlen in einen Index eingefügt habe. Der erstere Fall verwendete weit mehr Seiten, der letztere.
Bietet SQL Server eine ähnliche Funktionalität? Wenn ja: Können Sie mich auf eine Dokumentation zu dieser Funktion verweisen?
UPDATE: Durch die unten angegebenen Experimente scheinen die Blattknoten nicht geteilt zu sein und die internen Knoten sind zu 50% / 50% geteilt. Das macht B-Bäume bei zunehmenden Schlüsseln kompakter als bei zufälligen Schlüsseln. Der 90% / 10% -Ansatz von Oracle ist jedoch noch besser, und ich suche immer noch nach einer offiziellen Dokumentation, die das in Experimenten beobachtete Verhalten überprüfen kann.