Por que não é possível obter melhorias de desempenho apenas com índices, para que outras técnicas, como o particionamento de tabelas, sejam necessárias? A questão refere-se apenas ao desempenho, é claro que diferentes partições podem ser colocadas em diferentes espaços de tabela, o que tem outros efeitos que não podem ser alcançados com índices.
Ou, em outras palavras, apenas no desempenho: é possível obter as mesmas melhorias de desempenho com índices e particionamento de tabelas?
oracle
performance
paweloque
fonte
fonte
Respostas:
Não, o particionamento permite que algumas verificações de tabela sejam restritas a uma partição específica. Os índices tendem a ser inúteis se você retornar mais de 2 a 4% dos dados da tabela. Se o seu critério de seleção permitir que a consulta seja localizada em uma partição específica, as outras partições não precisarão ser verificadas.
Pode ser possível para o otimizador optar por usar a varredura de tabela para algumas partições e índices para outras. Não vi nenhum plano de explicação que indique que isso está acontecendo.
Se você possui muitos dados históricos, é possível criar consultas para dados atuais para limitar as partições consideradas às que contêm dados atuais.
fonte
Para responder diretamente à sua última pergunta: não, não acho que sejam equivalentes. Pense em uma tabela muito grande (dezenas de GB) que precisará ser pesquisada para obter os dados de um dia. Usando partições diárias, você verificará apenas os dados daquele dia, sem qualquer penalidade de espaço, enquanto um índice é uma estrutura separada que pode não conter informações suficientes (e também ocupa espaço, o que é uma preocupação quando se fala em grandes bancos de dados) ou pode não ser bastante seletivo.
De qualquer forma, índices e partições não estão competindo pelos mesmos benefícios em uso e desempenho. Você deve encontrar o saldo no seu banco de dados.
fonte