Re: [Pgsql-ayuda] Maximo

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

In response to

Responses

Browse pgsql-es-ayuda by date

  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