Una sfida persistente utilizzando SQL è determinare il corretto utilizzo dei esiste e degli operatori . I due operatori in grado di produrre gli stessi risultati , ma non sempre farlo . Inoltre, vi è dibattito notevole sopra come ciascun operatore è ottimizzato per la velocità . Gli utenti dovrebbero capire i diversi attributi di ciascun operatore e provare entrambi per determinare la funzione appropriata . IN Operator  
 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 .