Acontece que tive que trabalhar com SQL Server e Oracle por um bom tempo (felizmente não ao mesmo tempo).
O que ainda me intriga é a abordagem de armazenar tabelas como árvores balanceadas. No heap RDMS semelhante ao Oracle é padrão, no SQL Server (e muitos outros) o inverso (clusterizado, IOT) é verdadeiro. Adeptos de cada abordagem afirmam que seu caminho é o único 'correto' e apoiam o ponto de vista escolhido com vários testes/apresentações. No entanto, na minha opinião, o único ponto que eles provaram é que a implementação da abordagem "não padrão" é ruim e não deve ser usada na maioria dos casos ...
Tenho certeza de que ambas as abordagens são boas o suficiente (apenas porque ainda existem no mercado e mostram desempenho comparável) e têm um pouco de matemática por baixo, mas não consegui encontrar boas referências.
Sei que o tópico pode ser muito amplo para responder, e bons links são muito bem-vindos, mas realmente quero saber por que duas abordagens aparentemente controversas provaram que são válidas.
Eu estava na mesma posição quando comecei minha carreira como SQL Server DBA, mas estudei principalmente ORACLE (10g) na minha universidade.. e esse negócio de OCA também...
Concordo com @KennethFisher que ambos os RDBMS são diferentes e compará-los é como comparar maçãs e laranjas.
Para responder à sua pergunta sobre - armazenar tabelas como árvores balanceadas ...
por exemplo , visão geral de referência dos tipos de dados ROWID e UROWID
Agora, isso fica mais interessante e diferente quando se trata de índices B+Tree :
As estruturas B+Tree são semelhantes às estruturas B-Tree, mas os registros da tabela (dados reais) são armazenados nos nós de folha do Índice de chave primária, permitindo acesso rápido para correspondência exata ou pesquisas de varredura de intervalo no PK da tabela.
O Oracle usa o que é chamado de IOT (Index Organized Tables) e o SQL Server usa o que é chamado de Clustered Indexes.
Vamos ver índices clusterizados e tabelas organizadas por índice (IOT)...:
Do documento Oracle ,
Do documento do SQL Server ,
Finalmente algumas boas referências:
Acrescentarei mais pontos quando me deparar que vale a pena mencionar ...
Na verdade, há uma resposta bastante simples. Oracle e RDBMS semelhantes são otimizados para usar heaps, enquanto MS SQL Server e similares são otimizados para usar índices clusterizados. Se você der uma olhada nas partes internas de cada sistema, descobrirá que seu design foi construído para lidar com o método escolhido. Portanto, neste caso particular, ambos os grupos de "Adeptos" estão corretos. No SQL Server as tabelas com índices clusterizados funcionam melhor, no Oracle os heaps funcionam melhor (em geral em ambos os casos). Não tenho certeza se qualquer abordagem é melhor ou pior em geral, é apenas uma questão de preferência dos designers do RDBMS. E com base no que vi das partes internas do MS SQL Server (ainda não estudei as partes internas da Oracle), não tenho certeza se você poderia escrever um RDBMS que funcionaria bem nos dois sentidos.