From: | Lennin Caro <lennin(dot)caro(at)yahoo(dot)com> |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org, uno dos <refreegrata(at)yahoo(dot)com> |
Subject: | Re: duda con insert de muchas filas |
Date: | 2010-05-12 15:50:55 |
Message-ID: | 777712.79436.qm@web59502.mail.ac4.yahoo.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
--- On Wed, 5/12/10, uno dos <refreegrata(at)yahoo(dot)com> wrote:
From: uno dos <refreegrata(at)yahoo(dot)com>
Subject: [pgsql-es-ayuda] duda con insert de muchas filas
To: pgsql-es-ayuda(at)postgresql(dot)org
Date: Wednesday, May 12, 2010, 2:21 PM
Hola lista.
Primero, tengo postgresql 8.3.7
Ahora, tengo 2 dudas(dudas de novato)
La primera:
En una aplicación que estoy desarrollando tengo que hacer múltiples INSERT dentro de una transacción
¿que es más conveniente (En términos de rendimiento)?
Hacer esto
INSERT into tabla (campo 1,campo2)values(1,1)
INSERT into tabla (campo 1,campo2)values(2,2)
INSERT into tabla (campo 1,campo2)values(3,3)
....
INSERT into tabla (campo 1,campo2)values(n,n)
¿ O hacer esto?
INSERT into tabla (campo 1,campo2)values
(1,1),
(2,2),
(3,3)
...
(n,n)
Me interesa saber, cual instrucción es ejecutada más rápidamente por postgresql, o da
lo mismo?
Mi segunda pregunta
En caso de realizar la instrucción de esta manera:
--------------------------------------------------------------------------------------
INSERT into tabla (campo 1,campo2) values (1,1),
(2,2),
(3,3)
...
(n,n)
--------------------------------------------------------------------------------------
Hay algún problema con triggers before y los after insert or update?
o sea yo quiero que pase lo siguiente:
--------------------------------------------------------------------------------------
INSERT into tabla (campo 1,campo2) values
Ejecutar trigger before--> (1,1), <----Ejecutar trigger after
Ejecutar trigger before--> (2,2), <----Ejecutar trigger after
Ejecutar trigger before--> (3,3), <----Ejecutar trigger after
...
Ejecutar trigger before--> (n,n), <----Ejecutar trigger after
--------------------------------------------------------------------------------------
Es decir, lo que quiero, es que se ejecuten los trigger(los AFTER y los BEFORE) por cada fila insertada o actualizada en el momento en que sean insertadas y que no espere a que se ejecute el comando completamente.
me explico mejor:
Que no pase esto:
---------------------------------------------------------------------------------------
INSERT into tabla (campo 1,campo2) values (1,1),
(2,2),
(3,3)
...
(n,n)
Ejecutar trigger 1
Ejecutar trigger 2
Ejecutar trigger 3
....
Ejecutar trigger n
---------------------------------------------------------------------------------------
Bueno, espero puedan ayudarme.
Gracias por estar siempre ahí para responder a los más novatos.
Saludos
la diferencia entre la usar la instruccion insert por cada insercion y la de usar el insert en lote no es mucha. Si quieres mejor rendimiento usa la instruccion COPY
Si en el trigger usar for each row entonces se ejecutara por cada insert o update o delete
From | Date | Subject | |
---|---|---|---|
Next Message | Miguel Rodríguez Penabad | 2010-05-12 16:22:12 | Re: duda con insert de muchas filas |
Previous Message | uno dos | 2010-05-12 15:27:50 | optiminizacion de select (order by desc limit 1) |