Es obvio que el servidor MS Sql admite la teoría de cortocircuito para mejorar el rendimiento al evitar verificaciones innecesarias,
Ejemplo de apoyo:
SELECT 'TEST'
WHERE 1 = 'A'
SELECT 'TEST'
WHERE 1 = 1 OR 1 = 'A'
Aquí, el primer ejemplo daría como resultado el error 'Error de conversión al convertir el valor varchar' A 'al tipo de datos int'.
Mientras que el segundo se ejecuta fácilmente ya que la condición 1 = 1 se evaluó como VERDADERA y, por lo tanto, la segunda condición no se ejecutó en absoluto.
Además
SELECT 'TEST'
WHERE 1 = 0 OR 1 = 'A'
aquí la primera condición se evaluaría como falsa y, por lo tanto, el DBMS pasaría a la segunda condición y nuevamente obtendrá el error de conversión como en el ejemplo anterior.
NOTA: ESCRIBÍ LA CONDICIÓN ERRÓNEA SOLO PARA REALIZAR EL CLIMA LA CONDICIÓN SE EJECUTA O SE CORTA CORTOCIRCUITO SI LA CONSULTA RESULTA POR ERROR SIGNIFICA QUE LA CONDICIÓN SE EJECUTÓ, CORTOCIRCUITO DE OTRA MANERA.
EXPLICACIÓN SIMPLE
Considerar,
WHERE 1 = 1 OR 2 = 2
ya que la primera condición se evalúa como VERDADERA , no tiene sentido evaluar la segunda condición porque su evaluación en cualquier valor no afectaría el resultado en absoluto, por lo que es una buena oportunidad para que SQL Server ahorre tiempo de ejecución de consultas omitiendo la comprobación o evaluación de condiciones innecesarias .
en el caso de "OR" si la primera condición se evalúa como VERDADERA, toda la cadena conectada por "OR" se consideraría evaluada como verdadera sin evaluar otras.
condition1 OR condition2 OR ..... OR conditionN
Si la condición1 se evalúa como verdadera, descanse todas las condiciones hasta que se salte la condiciónN. En palabras generalizadas en la determinación del primer VERDADERO , se omitirán todas las demás condiciones vinculadas por OR.
Considera la segunda condición
WHERE 1 = 0 AND 1 = 1
ya que la primera condición se evalúa como FALSA evalúa como tiene sentido evaluar la segunda condición porque su evaluación en cualquier valor no afectaría el resultado en absoluto, por lo que nuevamente es una buena oportunidad para que Sql Server ahorre tiempo de ejecución de consultas omitiendo la comprobación o evaluación de condiciones innecesarias .
en caso de "Y" si la primera condición se evalúa como FALSA, toda la cadena conectada con el "Y" se consideraría evaluada como FALSA sin evaluar otras.
condition1 AND condition2 AND ..... conditionN
si la condición1 se evalúa como FALSA , descanse todas las condiciones hasta que se salte la condiciónN . En palabras generalizadas en la determinación del primer FALSO , se omitirán todas las demás condiciones vinculadas por AND .
POR LO TANTO, UN PROGRAMADOR SABIO DEBE SIEMPRE PROGRAMAR LA CADENA DE CONDICIONES DE TAL MANERA QUE, CONDICION MENOS GASTA O MÁS ELIMINADORA SE EVALUE PRIMERO, O ARREGLAR LA CONDICIÓN DE TAL MANERA QUE PUEDA TENER UN MÁXIMO BENEFICIO DE CORTO CIRCUITO