Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Rozdiely medzi EXISTS a IN v SQL

trvalá výzva pri použití SQL je určujúci správne použitie EXISTS a V operátorov . Obaja operátori môžu produkovať rovnaké výsledky , ale nie vždy tomu tak . Tiež, tam je značná debata o tom , ako je každý prevádzkovateľ optimalizovaný pre rýchlosť . Užívatelia by mali pochopiť rôzne atribúty každého prevádzkovateľa a skúste ako určiť príslušnú funkciu . V prevádzkovateľa

operátor IN vráti riadok, ak KDE : áno table.field hodnota zodpovedá zoznamu hodnôt . V sa zvyčajne používa ako súčasť hlavného dotazu alebo v spojení s poddotaz

Príklad 1 : . KDE Table.Field v ( ' a ' , ' b ' , ' c ' )

Príklad 2 : KDE Table.Field v ( poddotaz v návrate sadu hodnôt )
EXISTS operátora

EXISTS Prevádzkovateľ vráti všetky hlavné riadky otázky , či poddotaz obsahuje všetky riadky .

EXISTS sa používa iba v spojení s poddotaz . Riadky vrátené sú určené filtrovanie na úrovni hlavného dotazu. Príklad : WHERE EXISTS ( poddotaz návrate množinu hodnôt )
Rozdiel

IN nemožno hodnotiť NULL , takže tieto riadky sú vždy falošné , a ktoré neboli vrátené .

EXISTS možno hodnotiť NULL , takže tieto riadky môžu byť vrátené .
Podobnosti

EXISTS a v oboch podpory korelované a non - korelovaných poddotazov , a obaja môžu produkovať hlavný podobné výsledky . Keď korelované , EXISTS a IN zápas hlavné pole dotazu na poddotaz pole ( ex : main.id = subquery.id ) . Poddotaz hodnotí riadok po riadku , pre každý zápas nájdených . V tomto prípade , IN a EXISTS vráti rovnaké riadky na základe obdobných identifikačných zápasov . Keď non - korelované , EXISTS a V procese ich vnorených otázok , potom zodpovedajúce výsledky hlavného dotazu .
Výkon EXISTS a IN

výkon je určený databáze optimalizácia a realizácia plánu zamestnáva pre kód vykonávaný . Pre EXISTS a IN , optimalizátor môže zvoliť rôzne cesty . V Oracle , je to tým , NOT EXISTS vyhnúť anti - spojenie , a zvyčajne preukazujú rýchlejší ako NOT IN . Nakoniec , je nutné niektoré pokusov a omylov , aby referenčné najrýchlejšiu cestu v závislosti na databáze , a je to verzia sa používa . Uistite sa , že použitie operátora , ktorý zaisťuje správne výsledky , potom ak je všetko rovnaké , pokúste sa použiť EXISTS a IN naozaj vidieť , čo je rýchlejšie .

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené