From: | Jaime Casanova <jaime(at)2ndquadrant(dot)com> |
---|---|
To: | Lazaro Ruben Garcia Martinez <lgarciam(at)uci(dot)cu> |
Cc: | FORO POSTGRES <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Duda sobre JOIN |
Date: | 2012-04-26 16:50:04 |
Message-ID: | CAJKUy5h0_vs3dHyb_o6Z8TkLfxV_c+-2H9qcM43jt0cv_QMp8w@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
2012/4/25 Lazaro Ruben Garcia Martinez <lgarciam(at)uci(dot)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
From | Date | Subject | |
---|---|---|---|
Next Message | Alejandro Carrillo | 2012-04-28 22:35:11 | Re: Próximo evento de Comunidades PostgreSQL |
Previous Message | Yoan Manuel Perez Piñero | 2012-04-26 16:01:17 | Migracion de Oracle 10g a Postgres 9.1 |