Instrução MERGE
8i | 9i | 10g | 11g | 12c | 13c | 18c | 19c | 21c | Misc | PL / SQL | SQL | RAC | WebLogic | Linux
Home “Artigos” 9i “Aqui
A instrução MERGE
foi introduzida no Oracle 9i para inserir ou atualizar condicionalmente dados dependendo de sua presença, um processo também conhecido como “upsert”. A instrução MERGE
reduz as varreduras de tabela e pode executar a operação em paralelo, se necessário.
- Sintaxe
- Desempenho
Artigos relacionados.
- A declaração MERGE
- Aprimoramentos da declaração MERGE em Oracle Database 10g
Sintaxe
Considere o exemplo a seguir, onde os dados da tabela HR_RECORDS
são mesclados na EMPLOYEES
tabela.
A fonte também pode ser uma consulta.
Desempenho
O MERGE
a instrução é otimizada para mesclar conjuntos de dados, em vez de linhas únicas, conforme mostrado no exemplo abaixo.
Crie as seguintes tabelas de teste. A tabela de origem contém todas as linhas de ALL_OBJECTS
view, enquanto a tabela de destino contém aproximadamente metade das linhas.
O código a seguir compara o desempenho de quatro operações de mesclagem. O primeiro usa a instrução MERGE
direta. O segundo também usa a instrução MERGE
, mas linha por linha. O terceiro executa uma atualização e, condicionalmente, insere a linha se a atualização tocar em zero linhas. O quarto insere a linha e, em seguida, executa uma atualização se a inserção falhar com um valor duplicado na exceção do índice.
A saída mostra que a instrução MERGE
direta é um pedido de magnitude mais rápido do que seu rival mais próximo. A atualização / inserção executa quase o dobro da velocidade da inserção / atualização e até mesmo executa a MERGE
linha por linha.
Apenas comparando a atualização / inserção e os métodos de inserção / atualização isoladamente, temos que lembrar que as comparações irão variar dependendo dos dados da tabela. Se a maioria dos dados ainda não estiver presente, a abordagem de inserção / atualização pode ser melhor. Se a maioria dos dados já estiver presente, a abordagem de atualização / inserção provavelmente será melhor. Se você não tiver certeza, use merge, pois é mais claro.
Além da instrução MERGE
direta ser mais rápida, porque é uma instrução DML ela pode pode ser facilmente executado em paralelo para melhorar ainda mais o desempenho, desde que seu servidor possa lidar com a carga extra.
Para obter mais informações, consulte:
- A instrução MERGE
- Aprimoramentos da instrução MERGE no banco de dados Oracle 10g
- MERGE
Espero que isso ajude. Atenciosamente, Tim …
Voltar ao topo.