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