Re: Dudas sobre consulta SQL

From: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
To: Francisco Javier Morosini Eguren <francisco(dot)morosini(at)gmail(dot)com>
Cc: pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Dudas sobre consulta SQL
Date: 2013-05-17 19:39:46
Message-ID: 20130517193946.GR15045@eldon.alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Francisco Javier Morosini Eguren escribió:
> Alvaro, el usar un right join vs un with tiene alguna diferencia en
> performance ? o es transparente?

Bueno, son cosas sin relación. Lo que pongas en el WITH va a ser
equivalente a un elemento más del FROM. Es decir, en teoría podrías
agregar el CTE ("common table elemento", que es una pseudo-tabla que
defines en el WITH) dentro del FROM como un subselect. Tanto al CTE
como al subselect le puedes hacer JOINs de todo tipo. Ahora, si la
pregunta es "un CTE, ¿cómo se compara con un elemento del FROM?",
entonces la respuesta es que cada CTE siempre se optimiza separadamente
del resto de la consulta; para conseguir un resultado equivalente en el
subselect tendrías que agregarle OFFSET 0, que actúa como "barrera de
optimización".

En otras palabras, si puedes usar un outer join (right o left) evitando
el WITH, seguramente será mejor porque se puede optimizar en conjunto
con el resto de la consulta. La gracia del WITH (además de poder usarse
en consultas recursivas) es que la consulta suele ser más legible.

--
Álvaro Herrera http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Francisco Javier Morosini Eguren 2013-05-18 22:29:50 Re: Dudas sobre consulta SQL
Previous Message Francisco Javier Morosini Eguren 2013-05-17 18:45:29 Re: Dudas sobre consulta SQL