È ovvio che il server MS Sql supporta la teoria dei cortocircuiti, per migliorare le prestazioni evitando controlli inutili,
Esempio di supporto:
SELECT 'TEST'
WHERE 1 = 'A'
SELECT 'TEST'
WHERE 1 = 1 OR 1 = 'A'
Qui, il primo esempio provocherebbe l'errore "Conversione non riuscita durante la conversione del valore varchar" A "nel tipo di dati int."
Mentre la seconda viene eseguita facilmente poiché la condizione 1 = 1 viene valutata come VERA e quindi la seconda condizione non viene eseguita affatto.
Inoltre
SELECT 'TEST'
WHERE 1 = 0 OR 1 = 'A'
qui la prima condizione verrebbe valutata come falsa e quindi il DBMS andrebbe per la seconda condizione e di nuovo si otterrà l'errore di conversione come nell'esempio sopra.
NOTA: HO UTILIZZATO LA CONDIZIONE ERRONE SOLO PER REALIZZARE IL METEO LA CONDIZIONE È ESEGUITA O CORTA CIRCUITO SE I RISULTATI DI QUERY IN ERRORE SIGNIFICANO LA CONDIZIONE ESEGUITA, CORTA CIRCUITAMENTE.
SPIEGAZIONE SEMPLICE
Tener conto di,
WHERE 1 = 1 OR 2 = 2
poiché la prima condizione viene valutata su TRUE , non ha senso valutare la seconda condizione perché la sua valutazione in qualsiasi valore non influirebbe affatto sul risultato, quindi è una buona opportunità per Sql Server salvare i tempi di esecuzione delle query saltando il controllo o la valutazione non necessari delle condizioni .
nel caso di "OR" se la prima condizione viene valutata su TRUE l'intera catena collegata da "OR" verrebbe considerata come valutata su true senza valutare altre.
condition1 OR condition2 OR ..... OR conditionN
se la condizione1 viene valutata come vera, riposa tutte le condizioni fino a quando la condizioneN verrebbe ignorata. In parole generalizzate alla determinazione del primo VERO , tutte le altre condizioni collegate da OR verrebbero ignorate.
Considera la seconda condizione
WHERE 1 = 0 AND 1 = 1
poiché la prima condizione viene valutata a FALSO non ha senso valutare la seconda condizione perché la sua valutazione in qualunque valore non influirebbe affatto sul risultato, quindi ancora una volta è una buona opportunità per Sql Server salvare i tempi di esecuzione delle query saltando il controllo o la valutazione non necessari delle condizioni .
nel caso di "AND" se la prima condizione viene valutata su FALSE l'intera catena connessa con "AND" verrebbe considerata come valutata su FALSE senza valutare altre.
condition1 AND condition2 AND ..... conditionN
se la condizione1 viene valutata su FALSO , riposa tutte le condizioni fino a quando la condizione N verrebbe ignorata. In parole generalizzate alla determinazione del primo FALSO , tutte le altre condizioni collegate da AND verrebbero ignorate.
Pertanto, un saggio programmatore dovrebbe sempre programmare la catena di condizioni in tal modo che, meno costosa o la maggior parte delle condizioni ELIMINANTI OTTIENE VALUTATE PER PRIMA, O DISPONIBILI LE CONDIZIONI IN QUANTO POSSIBILE ASSUMERE IL MASSIMO VANTAGGIO DEL CORTO CIRCUITO