Muchas gracias, analisando sus respuestas creo que puedo empezar a probar con lo siguiente:
* Leer el archivo de excel y convertirlo a un sql con la sintaxis de COPY. * Insertar todos los registros en una tabla temporal * Hacer un querie obteniendo todos los creditos pendientes de la tabla principal. * Obtener todos los registros de la nueva tabla haciendo un join a la tabla principal * Este join me traera cierta informacion de la tabla principal, la cual si no existe entonces es un credito nuevo y hago un insert. * Si ya existe entonces actualizo. Supongo que es mas rapido hacer un select * from tabla_tmp; que un select * from tabla_principal where numero in(..). Haré algunas pruebas y les avisaré como resulta. Saludos. 2014-07-02 15:39 GMT-05:00 Alvaro Herrera <[email protected]>: > Ivan Perales M. escribió: > > > El problema es que despues de 4 años, la tabla tiene casi 800 mil > registros > > y buscar uno a uno se hizo lentisimo. Lo que hize fue un query con un in > de > > los casi 15 mil valores, alomejor esto esta equivocado pero hasta ahora > ha > > sido lo mejor que me ha resultado y el tiempo mejoro muchisimo en > > comparacion de realizar query por query, de casi 10 mins se bajo a 5 > mins. > > El IN (..) no siempre es lo mejor, dependiendo de si hay valores nulos. > Considera reescribir la consulta usando EXISTS. Ahora, posiblemente lo > mejor sea subir todos los 15000 nuevos registros a una nueva tabla, > crearle un par de índices, analizar, y luego hacer UPDATE .. USING en la > tabla grande. > > -- > Álvaro Herrera http://www.2ndQuadrant.com/ > PostgreSQL Development, 24x7 Support, Training & Services > -- Lindolfo Iván Perales Mancinas Solo existen 10 tipos de personas en el mundo, las que saben binario y las que no.
