Oracle
 sql >> Database >  >> RDS >> Oracle

Oracle:Eliminazione dal basso

Poiché sei interessato all'algoritmo, ciò a cui sembra ridursi la tua domanda è la differenza tra IN e EXISTS poiché i tuoi due esempi sono gli stessi, salvo per IN passando a un EXISTS nella cancellazione dal CHILD tabella.

È stato scritto molto su questa differenza nel corso degli anni, ma in sostanza IN è generalmente usato dove il numero di comparatori è piccolo mentre EXISTS è più efficiente per le sottoquery che restituiscono un numero maggiore di comparatori (soprattutto se tali valori contengono un numero elevato di duplicati).

IN deve valutare ogni comparatore restituito mentre EXISTS è soddisfatto quando incontra la prima corrispondenza.

Ci sono delle eccezioni e se le cerchi su Google le troverai, ma nel complesso questo sembra essere vero.

Tom Kyte (Oracle VP) ha un'ottima risposta con spiegazioni qui:http://asktom.oracle.com/pls/asktom/f?p=100:11:2148775836129778::::P11_QUESTION_ID:953229842074

TechRepublic ha anche una buona spiegazione qui:http://www.techrepublic.com/article/oracle-tip-understand-the-difference-between-in-and-exists-in-subqueries/5297080

Spero che questo aiuti...