Considere un índice de árbol B en un valor que siempre aumentará monotónicamente, por ejemplo, una columna de tipo IDENTIDAD. Con una implementación convencional de árbol B, cada vez que un nodo está lleno, se dividirá 50% / 50% y terminaremos con un árbol B en el que (casi) todos los nodos estarán llenos solo un 50%.
Sé que Oracle descubre cuándo un valor aumenta constantemente y, en estos casos, Oracle realiza una división del 90% / 10%. De esa manera, (casi) todos los nodos estarán llenos al 90% y se obtendrá una mejor utilización de la página para estos casos, bastante comunes.
No he podido encontrar documentación para una característica similar en SQL Server. Sin embargo, he realizado dos experimentos en los que inserté N enteros aleatorios y N enteros consecutivos en un índice, respectivamente. El primer caso usó muchas más páginas que el segundo.
¿SQL Server proporciona una funcionalidad similar? Si es así: ¿puede indicarme alguna documentación sobre esta función?
ACTUALIZACIÓN: Según los experimentos que se proporcionan a continuación, parece que los nodos hoja se mantienen sin dividir y los nodos internos se dividen en un 50% / 50%. Eso hace que los árboles B en claves crecientes sean más compactos que en claves aleatorias. Sin embargo, el enfoque de 90% / 10% de Oracle es aún mejor, y todavía busco alguna documentación oficial que pueda verificar el comportamiento visto en los experimentos.