Considere um índice da árvore B com um valor que sempre aumentará monotonicamente, por exemplo, uma coluna do tipo IDENTITY. Com uma implementação convencional da árvore B, sempre que um nó estiver cheio, ele será dividido em 50% / 50% e terminaremos com uma árvore B na qual (quase) todos os nós estarão apenas 50% cheios.
Eu sei que a Oracle descobre quando um valor está sempre aumentando e, nesses casos, a Oracle realiza uma divisão de 90% / 10%. Dessa forma, (quase) todos os nós estarão 90% cheios e uma utilização de página muito melhor será obtida para esses casos bastante comuns.
Não consegui encontrar documentação para um recurso semelhante no SQL Server. No entanto, realizei duas experiências nas quais inseri N números aleatórios e N números consecutivos em um índice, respectivamente. O primeiro caso usou muito mais páginas do segundo.
O SQL Server fornece uma funcionalidade semelhante? Em caso afirmativo: você pode me indicar alguma documentação sobre esse recurso?
ATUALIZAÇÃO: Parece, pelas experiências fornecidas abaixo, que os nós das folhas são mantidos sem divisão e os nós internos são divididos em 50% / 50%. Isso torna as árvores B ao aumentar as chaves mais compactas do que nas chaves aleatórias. No entanto, a abordagem de 90% / 10% da Oracle é ainda melhor e ainda procuro alguma documentação oficial que possa verificar o comportamento observado nas experiências.