Eu tenho uma pergunta bastante simples que está sendo difícil de pesquisar.
Preciso criar uma tabela que será particionada e na qual (muitos) dados serão carregados.
É mais eficiente criar a tabela com as partições ou adicionar as partições depois de inserir os dados?
ADIÇÃO: Para ter certeza de que entendi a imagem completa, se eu fosse truncar esta tabela para carregar (muitos) dados novamente, devo descartar as partições e adicionar após o carregamento?
ADIÇÃO #2: Se eu puder INSERIR os dados na ordem das partições, suponho que seria mais rápido do que não?
Você não pode particionar uma tabela não particionada existente. Portanto, se você quiser uma tabela particionada, precisará criar uma tabela particionada antes de inserir qualquer dado.
Supondo que você não esteja usando o particionamento de intervalo (caso em que você está dizendo ao Oracle como adicionar automaticamente novas partições com base nos dados), é quase certo que você deseja criar as partições apropriadas com antecedência. Se você estiver particionando a tabela por intervalo, poderá, em teoria, criar uma partição MAXVALUE para a tabela, carregar todos os dados e, em seguida, dividir a partição MAXVALUE nas partições individuais que desejar. Mas isso envolveria mover todos os dados várias vezes, o que seria muito menos eficiente do que simplesmente carregar os dados na partição apropriada desde o início.
Inserir os dados "na ordem das partições" provavelmente não fará diferença do ponto de vista do desempenho. O Oracle ainda precisa determinar para cada linha em qual partição inseri-la. Supondo que seus índices sejam locais, pode ser mais eficiente carregar uma tabela de preparação cuja estrutura corresponda à estrutura de uma partição, criar os índices apropriados na tabela de preparação e, em seguida, fazer uma troca de partição para trocar uma partição vazia com a tabela de preparação .