valores - where con varias condiciones sql
SQL: ¿importa el orden de las condiciones WHERE? (4)
Suponga que category_id
es una clave de índice (no clave principal) de los books
de tabla. ¿Hay alguna diferencia entre las dos declaraciones SQL siguientes?
SELECT * FROM books WHERE author=''Bill'' AND category_id=1
SELECT * FROM books WHERE category_id=1 AND author=''Bill''
Supongo que filtrar registros primero por category_id
y luego por author
es más rápido que filtrarlos en orden inverso. ¿Los motores SQL son lo suficientemente inteligentes como para hacerlo de esta manera?
En resumen, no, no importan ya que el optimizador determinará la mejor forma de obtener los datos.
Mientras que, en general, no, eso supone que estás usando una base de datos moderna. Tal vez hace diez años, ciertamente importaba entonces.
No, el orden de las cláusulas WHERE no importa.
El optimizador revisa la consulta y determina la mejor manera de obtener los datos en función de los índices y demás. Incluso si hubiera un índice de cobertura en las columnas category_id y autor, cualquiera cumpliría los criterios para usarlo (suponiendo que no haya algo mejor).
SQL es declarative .
En su ejemplo, le ha dicho al motor / optimizador lo que desea ... ahora encontrará la mejor manera de hacerlo (dentro de lo razonable y el "costo", que estaría fuera del tema).