Skip site navigation (1) Skip section navigation (2)

Re: Proceso dormido

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 (view raw or flat)
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".

In response to

Responses

pgsql-es-ayuda by date

Next:From: Edwin QuijadaDate: 2005-09-26 18:30:06
Subject: RE:
Previous:From: Ernesto Quiñones A.Date: 2005-09-26 17:38:38
Subject: comando COPY

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group