coconauta escribió: > si la funcion la tengo encerrada en un begin commit; > la funcion que hace?. > begin > 1- busca la provincia sino esta la inserta > 2-busca la localidad sino esta la inserta > 3- busca la persona si esta busca si ya esta su direcion sino inserta la > direccion, sino no esta la persona la carga > 4- en caso de una excepcion de sql no completo inserta todo los datos en una > tablita > commit;
O sea una transacción por cada línea del archivo? Eso es indudablemente muy muy lento. Para una carga inicial, no deberías hacer búsquedas de las localidades y provincias. Una búsqueda por cada registro es muy lento. Yo te recomendaría meter todo el registro sin hacer ninguna conversión en una tabla temporal; después haces consultas SQL que hagan prellenado de las tablas de provincia y localidad usando DISTINCT, y luego mueves las personas en la tabla de personas, y sus direcciones donde corresponda. Todo en una sola transacción. No en una transacción por persona porque eso es lo que te mata el rendimiento. -- Alvaro Herrera Vendo parcela en Valdivia: http://rie.cl/?a=255568 "Crear es tan difícil como ser libre" (Elsa Triolet) -- TIP 5: ¿Has leído nuestro extenso FAQ? http://www.postgresql.org/docs/faqs.FAQ.html