From: | Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org> |
---|---|
To: | Juan Carlos Avila Mendez <jcavila(at)tabicel(dot)com> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Proceso dormido |
Date: | 2005-09-26 18:07:34 |
Message-ID: | 20050926180734.GC7980@surnet.cl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
On Mon, Sep 26, 2005 at 12:31:51PM -0500, Juan Carlos Avila Mendez wrote:
> Si estoy usando llaves foraneas, y el codigo que estoy ejecutando es el
> siguiente:
>
> select * from c_articulos
> while not eof(c_articulos)
> select * from t_kardex where t_kardex.articulo_id =
> c_articulos.articulo_id order by almacen_id, articulo_id, fecha, temporal_1,
> consecutivo
> while not eof(t_kardex)
> ---------- (calculos locales)
> ---------- (calculos locales)
> t_kardex.cantidad_inicial = variable_local
> update t_kardex
> end while (t_kardex)
> close t_kardex
> end while (c_articulos)
Ugh. Has pensado en leer algun libro sobre SQL?
Esto podria quedar mucho mejor si hicieras
select * from c_articulos, t_kardex where t_kardex.articulo_id =
c_articulos.articulo_id
while not eof()
--- calculos locales
update t_kardex set cantidad_inicial = variable_local
end while
Y aun mas, posiblemente se pueda hacer en un solo paso
update t_kardex set cantidad_inicial = calculos
from c_articulos
where t_kardex.articulo_id = c_articulos.articulo_id
No tengas miedo de hacer JOIN. En PostgreSQL el join se puede optimizar
mucho. Estoy convencido que dejar que Postgres haga el trabajo sucio
resultara mucho mas eficiente que hacerlo tu, en el codigo de la
aplicacion.
Con respecto a los bloqueos: por favor muestra aca lo que hay en
pg_locks cuando ocurra uno de esos bloqueos, a ver si encontramos al
culpable.
--
Alvaro Herrera http://www.amazon.com/gp/registry/DXLWNGRJD34
Al principio era UNIX, y UNIX habló y dijo: "Hello world\n".
No dijo "Hello New Jersey\n", ni "Hello USA\n".
From | Date | Subject | |
---|---|---|---|
Next Message | Edwin Quijada | 2005-09-26 18:30:06 | RE: |
Previous Message | Ernesto Quiñones A. | 2005-09-26 17:38:38 | comando COPY |