Es pero obvio que MS SQL Server soporta la teoría de circuitos corto, para mejorar el rendimiento, evitando la comprobación de innecesario,
Apoyando Ejemplo:
SELECT 'TEST'
WHERE 1 = 'A'
SELECT 'TEST'
WHERE 1 = 1 OR 1 = 'A'
Aquí, el primer ejemplo podría resultar en error ' La conversión falló al convertir el valor varchar 'A' al tipo de datos int. '
Mientras que el segundo funciona fácilmente ya que la condición 1 = 1 se evalúa como VERDADERO y por lo tanto la segunda condición no se ejecuta en absoluto.
Adicionalmente
SELECT 'TEST'
WHERE 1 = 0 OR 1 = 'A'
aquí la primera condición evaluaría a falso y por lo tanto el DBMS iría a la segunda condición y otra vez obtendrá el error de la conversión como en el ejemplo anterior.
NOTA: I escribió el ESTADO ERRÓNEA sólo para darse cuenta WEATHER la condición se ejecuta o CORTOCIRCUITO si los resultados de la consulta en ERROR se entiende la condición ejecutados, CORTOCIRCUITO DE OTRO MODO.
explicación simple
Considérese,
WHERE 1 = 1 OR 2 = 2
como primera condición se está evaluado a VERDADERO, su 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 el Servidor SQL guarde el tiempo de Ejecución de Consulta salteando la verificación o evaluación innecesaria de la condición.
en caso de "OR" si primera condición se evalúa a TRUE toda la cadena conectado por "OR" habría considerado como evaluado a verdadero sin evaluar otros.
condition1 OR condition2 OR ..... OR conditionN
si la condición1 se evalúa como verdadera, descanse todas las condiciones hasta que la condiciónN se omita. En palabras generalizadas en la determinación de la primera TRUE, todas las demás condiciones vinculadas por O se omitirán.
considerar la segunda condición
WHERE 1 = 0 AND 1 = 1
como primera condición es conseguir calificar con certitud a FALSO su sentido evaluar la segunda condición, porque su evaluación en cualquier valor no afectaría el resultado en absoluto, así que de nuevo es una buena oportunidad para que el Servidor SQL guarde el tiempo de Ejecución de Consulta salteando la verificación o evaluación innecesaria de la condición.
en caso de "AND" si primera condición se evalúa a FALSO toda la cadena conectado con el "AND" habría considerado como evaluados como FALSE sin evaluar otros.
condition1 AND condition2 AND ..... conditionN
si el condición1 se evalúa a FALSO, descansar todas las condiciones hasta conditionN se omitiría. En palabras generalizadas en la determinación de la primera FALSE, todas las demás condiciones vinculadas por AND se omitirán.
MISMOS, un programador WISE DEBE programa siempre LA CADENA DE LAS CONDICIONES DE TAL MANERA QUE, MENOS caro o MOST eliminando afección se evalúa en primer lugar, o los arreglos LA CONDICIÓN DE TAL MANERA que puede tomar beneficio máximo de CORTOCIRCUITO
Gracias y Saludos,
Rk_Hirpara
no es ninguna garantía ** ** alguno sobre cómo y qué partes de una condición o '' se evalúan primero (o una alto). T-SQL es ** NO ** como C# de esa manera. Usted ** no puede ** confiar en un cortocircuito booleano. –
'¿Por qué? 1 = 1 y @ id = 'x' es verdadero '- es ** o ** en realidad, no ** y **. –
Aquí, en este INSERT @tempTable (id) values (1), falta INTO. – vijay