Sí y no.
(a continuación se refiere a SQL Server
exclusivamente)
Algunos operadores cortocircuito y algunos no lo hacen. OR
CAN cortocircuito, pero puede no depender del orden de operaciones seleccionado por el motor de consulta.
CASE
es (creo) 100% garantizado para cortocircuitar.
También puede tratar de forzar orden de evaluación con paréntesis anidados, como:
IF ((X) OR Y)
pero no soy positivo que esto siempre es coherente bien.
El problema con SQL en este sentido es que es declarativo, y la lógica real es realizada por el motor. De hecho, es posible que sea más eficaz comprobar Y
primero en su ejemplo y luego verificar X
- si, por ejemplo, Y
está indexado y X
requiere una exploración de tabla.
Para Referencia:
De la documentación ANSI-SQL from this answer:
Cuando la prioridad no está determinada por los formatos o por paréntesis, la evaluación eficaz de las expresiones es generalmente realizan de izquierda a derecha. Sin embargo, es dependiente de la implementación si las expresiones realidad se evalúan de izquierda a derecha, sobre todo cuando operandos u operadores podrían causar condiciones para ser elevadas o si los resultados de las expresiones se pueden determinar sin completamente la evaluación de todas las partes del expresión.
caso, no es en SQL, así que no estoy seguro de cómo se aplica eso. (ESTÁ en t-sql) –
@Billy - buen punto, añadí una advertencia al principio de la respuesta. – JNK
1 para referencia documentación –