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