Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Oracle:exclusão de baixo para cima


Como você está interessado no algoritmo, sua pergunta parece se resumir à diferença entre IN e EXISTS como seus dois exemplos são os mesmos, salve o IN mudando para um EXISTS na exclusão do CHILD tabela.

Muito tem sido escrito sobre essa diferença ao longo dos anos, mas em essência IN é geralmente usado onde o número de comparadores é pequeno enquanto EXISTS é mais eficiente para subconsultas que retornam um número maior de comparadores (especialmente se esses valores contiverem um grande número de duplicatas).

IN tem que avaliar cada comparador retornado enquanto EXISTS fica satisfeito quando encontra a primeira correspondência.

Existem exceções para isso e se você pesquisar no Google, você as encontrará, mas no geral isso parece ser verdade.

Tom Kyte (VP da Oracle) tem uma resposta muito boa com explicações aqui:http://asktom.oracle.com/pls/asktom/f?p=100:11:2148775836129778::::P11_QUESTION_ID:953229842074

TechRepublic também tem uma boa explicação aqui:http://www.techrepublic.com/article/oracle-tip-understand-the-difference-between-in-and-exists-in-subqueries/5297080

Espero que isto ajude...