
04/01/2010, 13:11
|
| | Fecha de Ingreso: enero-2010
Mensajes: 2
Antigüedad: 15 años, 2 meses Puntos: 0 | |
Rendimiento de una consulta Un saludo y feliz año a todos.
Hoy me ha asaltado una duda al hacer una consulta. Supongamos que tengo dos tablas t1 y t2, la primera bastante mayor que la segunda y que están relacionadas con una clave (pongamos que se llama k en ambas tablas):
SELECT *
FROM
t1 LEFT JOIN t2 ON t1.k=t2.k;
Hasta aquí, claro. Ahora supongamos que sólo nos interesan los registros de t1 que cumplen que su campo v es igual a valor:
SELECT *
FROM
t1 LEFT JOIN t2 ON t1.k=t2.k
WHERE t1.v='valor';
Mi pregunta es: ¿los SGBD hacen primero la composición y luego recurren al WHERE o desechan primero registros en las tablas para que la composición sea más pequeña? Porque si primero componen es más rápido:
SELECT *
FROM
(SELECT * FROM t1 WHERE t1.v='valor') t1 LEFT JOIN t2 ON t1.k=t2.k;
O sea, hacer una subselect. |