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"
