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

Oracle:Bottom-up sletning

Da du er interesseret i algoritmen, er det, dit spørgsmål ser ud til at bunde i, forskellen mellem IN og EXISTS da dine to eksempler er de samme, undtagen for IN ændres til en EXISTS i sletningen fra CHILD tabel.

Der har været skrevet meget om denne forskel gennem årene, men i det væsentlige IN bruges generelt, hvor antallet af komparatorer er lille, mens EXISTS er mere effektiv til underforespørgsler, der returnerer et større antal komparatorer (især hvis disse værdier indeholder et stort antal dubletter).

IN skal evaluere hver returnerede komparator, mens EXISTS er tilfreds, når den støder på den første kamp.

Der er undtagelser fra dette, og hvis du googler efter dem, vil du finde dem, men i det hele taget ser det ud til at holde stik.

Tom Kyte (Oracle VP) har et meget godt svar med forklaringer her:http://asktom.oracle.com/pls/asktom/f?p=100:11:2148775836129778::::P11_QUESTION_ID:953229842074

TechRepublic har også en god forklaring her:http://www.techrepublic.com/article/oracle-tip-understand-the-difference-between-in-and-exists-in-subqueries/5297080

Håber dette hjælper...




  1. MySQL rækkefølge efter felt i Eloquent

  2. Sammenligning af midlertidige tabeller til PostgreSQL og Oracle GTT

  3. Laravel veltalende forespørgsel

  4. MySQL kopierer effektivt alle poster fra en tabel til en anden