muchas gracias por la aclaración :)

2013/5/17 Alvaro Herrera <[email protected]>

> 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
>



-- 
<inflex> really, I see PHP as like a strange amalgamation of C, Perl, Shell
<crab> inflex: you know that "amalgam" means "mixture with mercury",
      more or less, right?
<crab> i.e., "deadly poison"

Responder a