From: | Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org> |
---|---|
To: | Rafa Comino <rafacomino(at)gmail(dot)com> |
Cc: | postgres Emanuel CALVO FRANCO <postgres(dot)arg(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Consulta Eficiente |
Date: | 2008-10-17 14:52:55 |
Message-ID: | 20081017145255.GF4218@alvh.no-ip.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Rafa Comino escribió:
> curpet CURSOR (fechaI DATE, fechaF DATE) FOR
> SELECT isbn, identidad, idpeticion, fechapeticion
> FROM peticiones
> WHERE fechapeticion >= fechaI
> AND fechapeticion <= fechaF
> AND tipopeticion = 'PC'
> AND completa = true
> ORDER BY fechapeticion;
> OPEN curpet(ldt_fini, ldt_ffin);
> -- Saco el primer registro
> FETCH curpet INTO lr_pet;
> WHILE FOUND LOOP
> IF ((SELECT COUNT(*) FROM log_peticiones WHERE isbn = lr_pet.isbn
> AND identidad = lr_pet.identidad AND tipopeticion='PC' AND fechapeticion >=
> ldt_fechanocobrar) > 0) THEN
> DELETE FROM peticiones WHERE idpeticion = lr_pet.idpeticion;
Hmm, esto debe ser lento como inyección de ulpo.
Creo que está mal planteada la forma de hacer esto. En lugar de ir una
por una con el cursor viendo el COUNT() de la otra tabla, deberías
reformular esto usando un EXISTS. Algo así como
delete from peticiones
where exists (select 1
from log_peticiones
where peticiones.identidad = identidad
and tipopeticion = 'PC'
and fechapeticion >= ldt_fechanocobrar)
> -- Elimino las peticiones repetidas mayores que la petición
> que estoy revisando
> DELETE FROM peticiones
> WHERE isbn = lr_pet.isbn
> AND identidad = lr_pet.identidad
> AND tipopeticion='PC'
> AND fechapeticion >= ldt_fini
> AND fechapeticion <= ldt_ffin
> AND fechapeticion > lr_pet.fechapeticion;
> END IF;
Acá algo semejante, creo.
--
Alvaro Herrera http://www.flickr.com/photos/alvherre/
Renaming ReiserFS to NinaFS is such an amazingly stupid suggestion, in so many
ways, that it ought to qualify for some kind of award. Or perhaps we should
name an award after it: the "NinaFS award" for outstanding crassness.
(edmundo, http://lwn.net/Articles/203846/)
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2008-10-17 15:01:36 | Re: existen stored procedures? |
Previous Message | Alvaro Herrera | 2008-10-17 14:46:31 | Re: Consulta Eficiente |