From: | Haroldo Stenger <hstenger(at)adinet(dot)com(dot)uy> |
---|---|
To: | Alvaro Herrera <alvherre(at)dcc(dot)uchile(dot)cl> |
Cc: | pgsqlayuda <Pgsql-ayuda(at)tlali(dot)iztacala(dot)unam(dot)mx> |
Subject: | Re: [Pgsql-ayuda] Maximo |
Date: | 2003-11-23 18:11:27 |
Message-ID: | 1069611079.686.80.camel@gilda |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Hola Alvaro!
On Sun, 2003-11-23 at 12:53, Alvaro Herrera wrote:
> ¿Qué tal las Jornadas de Software Libre?
Se realizaron, en general salieron bien.
> Veo bastante gente con
> corbatas en las fotos ... creo que me sorprende un poco.
Puede ser, creo que este anho la idea era traer a gente del sector
empresarial y politico, para mostrales como el software libre les puede
cambiar la vida. De todos modos habiamos muchos geeks sin corbata.
> No vi a Justin
> en el programa ... !?
No vino :-( y PostgreSQL quedo sin representante oficial. Una pena.
> > select hisprec.artcod,hisprec.precio
> > from
> > (select hisprec.artcod as a, max(hisprec.fecha) as b
> > from hisprec
> > where hisprec.fecha<fecha_limite
> > group by hisprec.artcod) as t,
> > hisprec
> > where t.a=hisprec.artcod and t.b=hisprec.fecha ;
>
> Simpático ... es lo bueno de tener toda la potencia de la sintaxis SQL.
> La gente acostumbrada, por ej., a MySQL, no puede hacer estas cosas
> directamente.
>
Interesante.
> ¿Viste el plan de ejecución? (EXPLAIN ANALYZE)
>
Me da lo siguiente:
template1=# VACUUM FULL ANALYZE;
VACUUM
template1=# explain analyze select hisprec.artcod,hisprec.precio from (SELECT hisprec.artcod as aaaa, max(hisprec.fecha) as bbbb from armov,hisprec where armov.artcod=hisprec.artcod and hisprec.fecha<994801 group by hisprec.artcod) as tttt,hisprec where tttt.aaaa=hisprec.artcod and tttt.bbbb=hisprec.fecha;
QUERY PLAN
-------------------------------------------------------------------------------------------------------------------------------------------------------------
Merge Join (cost=154263.52..156917.64 rows=354 width=82) (actual time=285354.25..314540.26 rows=5234 loops=1)
Merge Cond: (("outer".bbbb = "inner".fecha) AND ("outer".aaaa = "inner".artcod))
-> Sort (cost=76814.90..76851.76 rows=14745 width=37) (actual time=97784.85..97873.22 rows=5227 loops=1)
Sort Key: tttt.bbbb, tttt.aaaa
-> Subquery Scan tttt (cost=70783.88..75793.97 rows=14745 width=37) (actual time=83557.89..97319.74 rows=5227 loops=1)
-> Aggregate (cost=70783.88..75793.97 rows=14745 width=37) (actual time=83557.87..97256.98 rows=5227 loops=1) -> Group (cost=70783.88..75425.34 rows=147450 width=37) (actual time=83539.24..96133.57 rows=102323 loops=1)
-> Merge Join (cost=70783.88..75056.72 rows=147450 width=37) (actual time=83539.21..94489.01 rows=102323 loops=1)
Merge Cond: ("outer".artcod = "inner".artcod)
-> Sort (cost=522.10..537.55 rows=6182 width=12) (actual time=323.59..344.31 rows=6182 loops=1)
Sort Key: armov.artcod
-> Seq Scan on armov (cost=0.00..132.82 rows=6182 width=12) (actual time=0.04..63.79 rows=6182 loops=1)
-> Sort (cost=70261.79..71461.34 rows=479819 width=25) (actual time=83215.40..87728.95 rows=489789 loops=1)
Sort Key: hisprec.artcod
-> Seq Scan on hisprec (cost=0.00..11755.73 rows=479819 width=25) (actual time=10.23..15221.32 rows=489789 loops=1)
Filter: (fecha < 994801::numeric)
-> Sort (cost=77448.62..78736.16 rows=515018 width=37) (actual time=186434.33..200931.11 rows=489788 loops=1)
Sort Key: hisprec.fecha, hisprec.artcod
-> Seq Scan on hisprec (cost=0.00..10468.18 rows=515018 width=37) (actual time=51.17..16745.77 rows=515018 loops=1) Total runtime: 315395.15 msec
(20 rows)
hay algunos seqscans, no se como interpretarlos, si es "eficiente", o
no.
> Supongo que una alternativa sería crear tu propia función de agregación,
> pero francamente ignoro el nivel de dificultad que podría tener. Por
> otra parte, ¿realmente quieres buscar otra forma? Recuerda, esto no es
> Perl, así que basta con una forma de resolver el problema :-)
>
:-) buen apunte
> Quizás puedas hacer un "self join" sin necesidad de una subconsulta,
> pero en realidad no estoy seguro de si es posible.
>
hmmmm, self join es cuando pones una misma tabla mas de una vez en from
?
> > Que les parece? Que otros temas similares a este han encontrado?
>
> Hmm... yo tengo un sistema que usa harto SQL complejo, pero creo que es
> demasiado específico para servir de ejemplo general :-(
> Lo malo es que el sistema genera parte de las consultas al vuelo, así
> que extraerlas del código es difícil ...
interesante! que hace tu sistema?
Gracias
Saludos
Haroldo
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2003-11-23 20:57:35 | Re: [Pgsql-ayuda] Maximo |
Previous Message | Alvaro Herrera | 2003-11-23 15:53:48 | Re: [Pgsql-ayuda] Maximo |