En SQL Server 2005 cuando tengo múltiples parámetros, ¿tengo la garantía de que la orden de evaluación será siempre de izquierda a derecha?Seleccione la orden de evaluación "where clause"
Utilizando un ejemplo:
select a from table where c=1 and d=2
En esta consulta si el "c = 1" condición falla nunca se evaluó la condición "d = 2"?
PD- "c" es una columna entera en un índice, d es un gran varchar y la columna no indexable que requiere un escaneo completo de tabla
actualización yo estaba tratando de evitar la realización de dos consultas o sentencias condicionales, me Solo necesito algo como: si la "condición c" falla, hay una manera de evitar realizar la pesada "condición d", ya que no es necesaria en mi caso.
Aunque no estaba explícita en mi pregunta, también estaba en mi mente la cuestión de "buscar columnas no indexadas entre los elementos encontrados en la columna indexada". En mi caso, se adapta perfectamente a mis necesidades, porque consultar la columna indexada primero dejará solo una pequeña cantidad de registros para filtrar, lo cual no es un problema – t3mujin
Solo recuerde mi última frase: el optimizador puede elegir un plan de consulta diferente para cada ejecución . Hay formas de "anclar" planes y también de especificar sugerencias para el optimizador; No estoy familiarizado con cómo funcionan en MS-SQL. – kdgregory
El objetivo de usar un lenguaje declarativo es que el sistema determine el mejor plan de ejecución para usted.Los optimizadores tienden a funcionar bien en este tipo de cosas con las estadísticas actuales; algo llamado "remolinos" puede en teoría funcionar sin estadísticas en absoluto, pero son una invención reciente, y pueden no estar en MS-SQL. – SquareCog