Excerpts from josefermin54's message of mié mar 23 14:53:41 -0300 2011:
> 
> Buenas tardes amigos, mi pregunta de hoy es acerca de una tabla a la que se 
> van a insertar 2 millones de registros provenientes de un archivo de texto, 
> ahora bien en esa tabla se creo un indice para hacer las búsquedas más 
> ágiles, pero, antes de crear el índice la insercción de registros se hacía 
> con una muy rapidez buena (en una hora se insertaron 600 mil registros y 
> ahora con el índice en una hora sólo se pudieron insertar 23 mil registros). 
> Mi pregunta es tiene que ver algo el índice creado con la rapidez de 
> insercción. Y si existe de alguna forma de poder insertar registros con más 
> rapidez desde un archivo de texto.
> Sistema operativo utilizado: Windows 7Postgresql 8.4Método utilizado: 
> btreecampo al que se le creó índice: codigocantidad de índices en la tabla: 
> 1En el momento último de insercción de registros solo estaba utilizando: 
> pgadmin y el programa para insertar registros desde el archivo de texto.

Algo anda profundamente mal con tu sistema.  Acá hice una prueba rápida:
primero creo un archivo de texto con un millón de líneas.  Luego creo
una tabla, sin índices, y le inserto con COPY las líneas desde el
archivo.  Se demora 8 segundos.  Luego trunco la tabla, creo un índice,
vuelvo a insertar el mismo millón de registros.  Se demora 17 segundos.

Esta es una máquina de escritorio que no tiene nada del otro mundo.

$ seq 1 1000000 > /tmp/unmillon
$ ls -l /tmp/unmillon 
-rw-r--r-- 1 alvherre alvherre 6888896 mar 23 17:52 /tmp/unmillon

alvherre=# create table unmillon (a int);
CREATE TABLE
alvherre=# \timing
El despliegue de duración está activado.
alvherre=# copy unmillon from '/tmp/unmillon';
COPY 1000000
Duración: 8488,785 ms
alvherre=# truncate table unmillon;
TRUNCATE TABLE
Duración: 54,189 ms
alvherre=# create index f on unmillon (a);
CREATE INDEX
Duración: 141,347 ms
alvherre=# copy unmillon from '/tmp/unmillon';
COPY 1000000
Duración: 17252,609 ms

Repetí la inserción varias veces sin truncate para ver cómo cambiaban
los tiempos, y se fueron haciendo progresivamente peores pero no mucho
(como se espera):

alvherre=# truncate table unmillon ;
TRUNCATE TABLE
Duración: 55,474 ms
alvherre=# copy unmillon from '/tmp/unmillon';
COPY 1000000
Duración: 12552,902 ms
alvherre=# commit;
COMMIT
Duración: 74,718 ms
alvherre=# copy unmillon from '/tmp/unmillon';
COPY 1000000
Duración: 25170,691 ms
alvherre=# copy unmillon from '/tmp/unmillon';
COPY 1000000
Duración: 21487,533 ms
alvherre=# copy unmillon from '/tmp/unmillon';
COPY 1000000
Duración: 28824,152 ms
alvherre=# copy unmillon from '/tmp/unmillon';
COPY 1000000
Duración: 30203,438 ms
alvherre=# copy unmillon from '/tmp/unmillon';
COPY 1000000
Duración: 27992,940 ms


-- 
Álvaro Herrera <alvhe...@alvh.no-ip.org>
-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripci�n:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a