Considérons un index B-tree sur une valeur qui augmentera toujours de façon monotone, par exemple une colonne de type IDENTITY. Avec une implémentation d'arbre B conventionnelle, chaque fois qu'un nœud est plein, il sera divisé à 50% / 50% et nous nous retrouvons avec un arbre B dans lequel (presque) tous les nœuds ne seront pleins qu'à 50%.
Je sais qu'Oracle découvre quand une valeur est en constante augmentation et dans ces cas, Oracle effectue à la place une répartition 90% / 10%. De cette façon, (presque) tous les nœuds seront remplis à 90% et une utilisation de la page bien meilleure est obtenue pour ces cas, assez courants.
Je n'ai pas pu trouver de documentation pour une fonctionnalité similaire dans SQL Server. Cependant, j'ai effectué deux expériences dans lesquelles j'ai inséré N entiers aléatoires et N entiers consécutifs dans un index, respectivement. Le premier cas utilisait bien plus de pages que le second.
SQL Server fournit-il une fonctionnalité similaire? Si oui: pouvez-vous m'indiquer une documentation sur cette fonctionnalité?
MISE À JOUR: Il semble, par les expériences fournies ci-dessous, que les nœuds foliaires sont maintenus non divisés et les nœuds internes sont divisés à 50% / 50%. Cela rend les arbres B sur les clés croissantes plus compacts que sur les clés aléatoires. Cependant, l'approche 90% / 10% par Oracle est encore meilleure, et je cherche toujours de la documentation officielle qui peut vérifier le comportement vu dans les expériences.