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.

Responder a