Differenze tra SQL esiste e in Differenza tra

Anonim

Sql esiste vs In

La risoluzione dei problemi in TSQL è disponibile attraverso diversi metodi e i risultati desiderati possono essere visti usando uno di essi. Uno dei modi per raggiungere i risultati finali è l'uso delle clausole IN ed EXISTS. L'uso delle clausole aiuta la filtrazione del set di risultati con riferimento a una sottoquery disponibile. L'esecuzione di IN e EXISTS differisce leggermente e sono queste differenze che vengono valutate.

Ci sono vari fattori che determinano se IN o EXISTS saranno implementati o meno. Uno di questi è la quantità di dati disponibile nella tabella. Un'enorme quantità di dati ha come risultato che il server SQL sta tornando a utilizzare una scansione dell'indice anziché utilizzare Index Seek.

Differenze

Anche le statistiche fornite indicano molto sul piano di esecuzione che dovrebbe essere seguito. La differenza viene mostrata quando il server ha accumulato abbastanza statistiche per prendere una decisione valida e quando non ci sono statistiche la prima volta. L'hardware in uso determina anche se verranno utilizzati IN o EXISTS. Questo dipende in gran parte dal numero di CPU disponibili.

EXISTS vengono eseguiti quando è necessario abbinare i risultati di una query con un'altra sottoquery. D'altra parte viene utilizzato quando si recuperano i valori di colonne specifiche che si trovano all'interno di un elenco. La decisione di quale utilizzare è basata esclusivamente sull'adeguatezza, i. e. quando senti che il suo uso è appropriato.

Nel caso in cui venga utilizzata una sottoquery e viene restituito un valore nullo, l'intera istruzione diventa NULL. Questo in effetti punta all'uso della parola chiave EXISTS. L'uso della parola chiave IN si verifica quando è richiesto un confronto di vari valori nelle sottoquery. La parola chiave EXISTS viene utilizzata principalmente nella valutazione di affermazioni true o false e IN viene utilizzata nella maggior parte delle istruzioni di sottoquery corrispondenti.

In generale, EXISTS sarà più veloce di IN, il motivo è che quando ESISTE viene eseguito, la ricerca ha riscontrato un successo e rivedrà se la condizione si è dimostrata vera. Quando esegue IN, raccoglie tutti i risultati dalla sottoquery e li presenta per ulteriori elaborazioni e questo processo richiede un po 'di tempo.

È importante notare che il fraseggio della query deve essere eseguito correttamente e controllato prima di essere eseguito. La mancata garanzia che la query sia corretta risulta in EXISTS e IN che presentano valori diversi e questo non è l'obiettivo del loro utilizzo in SQL Server. L'ottimizzatore deve sempre essere ottimale quando si lavora come dovrebbe.

Sommario

La risoluzione dei problemi in TSQL viene comunemente eseguita con EXISTS e IN.

Si osservano leggere differenze durante lo srotolamento di EXISTS e IN, anche se l'ottimizzazione per ciascuno dovrebbe fornire lo stesso valore.

Le statistiche sono uno dei fattori determinanti per stabilire se EXISTS o IN saranno implementati

L'hardware in uso è anche fondamentale per determinare se EXISTS o IN devono essere distribuiti

La gestione di EXISTS sarà utile quando c'è è necessario correlare i risultati di una determinata query con un'altra sottoquery.EXISTS è anche molto comune quando le affermazioni vere o false richiedono una valutazione.

IN viene comunemente utilizzato quando è necessario recuperare colonne specifiche in un elenco. Inoltre è comunemente usato quando è richiesto il confronto dei valori nelle subquery.

EXISTS è generalmente più veloce di IN quando viene eseguito, trova un hit e controlla se la condizione si è dimostrata vera

IN è più lenta in quanto raccoglie tutti i risultati dalla subquery e la elabora.

Sebbene siano presenti diverse esecuzioni, l'ottimizzazione dovrebbe dare risultati simili in EXISTS e IN.