2012/4/25 Lazaro Ruben Garcia Martinez <lgarc...@uci.cu>
>
> Hola a todos en la lista. Les escribo, porque tengo una duda sobre el
> orden (si es que importa) en que se colocan las tablas en una operación de
> unión (JOIN).
>
> Básicamente quiero saber si la tabla que más tuplas tiene, debe ir a la
> izquierda o la derecha, o si el planificador se encarga por si solo de esto.
>

si hablamos de inner join, importa un rabano, postgres no te va a
hacer caso de todos modos:

Ejemplo, tengo una tabla repl_nodes de 2 registros y una tabla
repl_monitor de 1millon. Adjunto el plan de ejecución para la misma
consulta pero con el orden de las tablas cambiado

http://explain.depesz.com/s/pn4
explain analyze
select * from repl_nodes join repl_monitor on (id = standby_node);


http://explain.depesz.com/s/wup
explain analyze
select * from repl_monitor join repl_nodes on (standby_node = id);

como pueden ver usa el mismo plan de ejecucion. eso es porque en INNER
JOIN postgres toma la decision que mejor favorezca, en cambio cuando
se usa {LEFT | RIGHT | FULL} JOIN en esos casos postgres tiene pocas
opciones (a menos que esten en 9.0 o 9.1 donde postgres sabe que puede
cambiar el orden de las tablas siempre que cambie el LEFT por RIGHT)

--
Jaime Casanova         www.2ndQuadrant.com
Professional PostgreSQL: Soporte 24x7 y capacitación
-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a