Il est évident que le serveur MS Sql prend en charge la théorie des courts-circuits, pour améliorer les performances en évitant les vérifications inutiles,
Exemple à l'appui:
SELECT 'TEST'
WHERE 1 = 'A'
SELECT 'TEST'
WHERE 1 = 1 OR 1 = 'A'
Ici, le premier exemple entraînerait l'erreur «La conversion a échoué lors de la conversion de la valeur varchar« A »en type de données int.»
Alors que la seconde s'exécute facilement car la condition 1 = 1 évaluée à TRUE et donc la seconde condition ne s'exécute pas du tout.
En outre
SELECT 'TEST'
WHERE 1 = 0 OR 1 = 'A'
ici, la première condition serait évaluée à faux et donc le SGBD irait pour la deuxième condition et vous obtiendrez à nouveau l'erreur de conversion comme dans l'exemple ci-dessus.
REMARQUE: J'ÉCRIT LA CONDITION ERRONEE JUSTE POUR RÉALISER LA MÉTÉO LA CONDITION EST EXÉCUTÉE OU EN COURT-CIRCUIT SI LA REQUÊTE RÉSULTAT EN ERREUR SIGNIFIE LA CONDITION EXÉCUTÉE, EN COURT-CIRCUIT AUTREMENT.
EXPLICATION SIMPLE
Considérer,
WHERE 1 = 1 OR 2 = 2
comme la première condition est évaluée à TRUE , il est inutile d'évaluer la deuxième condition car son évaluation dans n'importe quelle valeur n'affecterait pas du tout le résultat, donc c'est une bonne opportunité pour Sql Server de gagner du temps d'exécution de la requête en ignorant la vérification ou l'évaluation des conditions inutiles .
dans le cas de "OU" si la première condition est évaluée à TRUE, la chaîne entière connectée par "OR" serait considérée comme évaluée à true sans en évaluer les autres.
condition1 OR condition2 OR ..... OR conditionN
si la condition1 est évaluée à vrai, mettez toutes les conditions au repos jusqu'à ce que la conditionN soit ignorée. En termes généralisés lors de la détermination du premier TRUE , toutes les autres conditions liées par OR seraient sautées.
Considérez la deuxième condition
WHERE 1 = 0 AND 1 = 1
comme la première condition est évaluée à FALSE, il est inutile d'évaluer la deuxième condition car son évaluation dans n'importe quelle valeur n'affecterait pas du tout le résultat, donc encore une fois, c'est une bonne opportunité pour Sql Server de gagner du temps d'exécution de la requête en ignorant la vérification ou l'évaluation des conditions inutiles .
dans le cas de "ET" si la première condition est évaluée à FAUX, la chaîne entière connectée avec le "ET" serait considérée comme évaluée à FAUX sans en évaluer les autres.
condition1 AND condition2 AND ..... conditionN
si la condition1 est évaluée à FALSE , mettez toutes les conditions au repos jusqu'à ce que la conditionN soit ignorée. En termes généralisés lors de la détermination du premier FALSE , toutes les autres conditions liées par AND seraient ignorées.
PAR CONSÉQUENT, UN PROGRAMMEUR SAGE DOIT TOUJOURS PROGRAMMER LA CHAÎNE DE CONDITIONS DE TELLE FAÇON QUE, LA CONDITION LA MOINS CHER OU LA PLUS ÉLIMINATOIRE SOIT ÉVALUÉE D'ABORD, OU ARRANGER LA CONDITION DE TELLE FAÇON DE PRENDRE UN BÉNÉFICE MAXIMAL DU COURT-CIRCUIT