Saltar al contenido

¿Importa el orden de las cláusulas where en SQL?

Hacemos una verificación completa cada noticias en nuestra web con la meta de enseñarte en todo momento información certera y actual.

No, ese orden no importa (o al menos: no debería importar).

Cualquier optimizador de consultas decente mirará todo las partes de la WHERE cláusula y descubra la forma más eficiente de satisfacer esa consulta.

Sé que el optimizador de consultas de SQL Server elegirá un índice adecuado, sin importar en qué orden tenga sus dos condiciones. Supongo que otros RDBMS tendrán estrategias similares.

¡Lo que importa es si tiene o no un índice adecuado para esto!

En el caso de SQL Server, probablemente usará un índice si tiene:

  • un índice sobre (LastName, FirstName)
  • un índice sobre (FirstName, LastName)
  • un índice de sólo (LastName)o solo (FirstName) (o ambos)

Por otro lado, nuevamente para SQL Server, si usa SELECT * agarrar todo columnas de una tabla, y la tabla es bastante pequeña, entonces hay una buena posibilidad de que el optimizador de consultas solo haga una exploración de la tabla (o índice agrupado) en lugar de usar un índice (porque la búsqueda en la página de datos completa para obtener todo otras columnas simplemente se vuelven demasiado costosas muy rápidamente).

El orden de las cláusulas WHERE no debería marcar la diferencia en una base de datos que se ajuste al estándar SQL. El orden de evaluación no está garantizado en la mayoría de las bases de datos.

No creas que a SQL le importa el orden. Lo siguiente genera un error en SQL Server:

select *
from INFORMATION_SCHEMA.TABLES
where ISNUMERIC(table_name) = 1 and CAST(table_name as int) <> 0

Si la primera parte de esta cláusula se ejecutara primero, solo los nombres de las tablas numéricas se convertirían en números enteros. Sin embargo, falla, proporcionando un claro ejemplo de que SQL Server (al igual que con otras bases de datos) no se preocupa por el orden de las cláusulas en la instrucción WHERE.

ANSI SQL Borrador 2003 5WD-01-Framework-2003-09.pdf

6.3.3.3 Orden de evaluación de reglas

Cuando la precedencia no está determinada por los formatos o por paréntesis, la evaluación efectiva de las expresiones generalmente se realiza de izquierda a derecha. Sin embargo, depende de la implementación si las expresiones se evalúan realmente de izquierda a derecha, en particular cuando los operandos u operadores pueden generar condiciones o si los resultados de las expresiones se pueden determinar sin evaluar completamente todas las partes de la expresión.

copiado de aquí

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags :

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *