Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/01/2010, 13:11
caco3
 
Fecha de Ingreso: enero-2010
Mensajes: 2
Antigüedad: 14 años, 4 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.