L'operatore IN restituisce una riga se una WHERE valore table.field condizionata corrisponde a una lista di valori . IN è tipicamente usato come parte di una query principale o in combinazione con una sottoquery
Esempio 1 : . DOVE table.field in ('a' , 'b' , 'c' ) per
esempio 2 : DOVE table.field in ( ritorno di sottoquery insieme di valori)
ESISTE operator
ESISTE operatore restituisce tutti i principali file di query se la subquery contiene tutte le righe .
esiste è usato solo in combinazione con una sottoquery . Righe restituite sono determinati dal filtraggio a livello di query principale. Esempio : DOVE ESISTE ( il ritorno di sottoquery insieme di valori)
Differenza
IN non può valutare NULL , per cui le righe sono sempre false , e non tornarono .
ESISTE può valutare NULL , quindi queste righe possono essere restituiti .
somiglianze
esiste e in entrambi supporto subquery correlate e non correlate , e entrambi possono produrre principali risultati simili . Quando correlata , esiste e sospesa, un campo di query principale per un campo di sottoquery ( es: main.id = subquery.id ) . La subquery restituisce riga per riga , per ogni corrispondenza trovata . In questo caso , IN e EXISTS restituisce le stesse righe in base a simili incontri id . Quando non correlati , esiste e IN processo loro sottoquery prima, poi i risultati delle partite alla query principale.
Prestazioni di esiste e IN
prestazioni sono determinate dalla banca dati ottimizzatore e il piano di esecuzione che impiega per il codice eseguito . Per EXISTS e IN , l'ottimizzatore può scegliere percorsi diversi . In Oracle , questo è di NON ESISTE evitando un anti -join , e in genere dimostrando veloce di NOT IN . Alla fine, un po 'di tentativi ed errori è necessario per riferimento il percorso più veloce a seconda del database e la sua versione in uso . Assicurarsi di utilizzare l'operatore che assicura i risultati corretti , poi se tutto è lo stesso , provare EXISTS sostituendo e per vedere realmente che è più veloce .
Programmazione © www.354353.com