Re: Performarce para 15 mil queries

From: "Ivan Perales M(dot)" <ivan(dot)perales(at)gmail(dot)com>
To: Jaime Giraldo <sposmen(at)gmail(dot)com>, Ayuda Esp PostgreSQL <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Performarce para 15 mil queries
Date: 2014-07-02 19:54:48
Message-ID: CAHMuS07RHOYC4sTxvrc3ECr8Xbc5qvERGhi7DCqib7d15Ek8Lw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Gracias por tu rapida respuesta.

Alomejor me falto información. Estoy usando postgres 9.0
La tabla en cuestion si tiene un index de varias columnas, pero tambien
tiene un index de una sola columna, que es el número de crédito, y no hago
ningun join a otra tabla, solo buscar el registro para actualizar su status
y/o importe.

El queri individual es algo asi:

select campos from credito where numero = $param;

Es simple, pero como lo ejecuto varios miles de veces se vuelve lento, La
otra opcion que utilizo actualmente es

Select campos from credito where numero in ($Lista)

Donde lista es un parametro con los casi 15 mil numeros de credito, y como
dije esta me resulta mas rapida que realizarlos uno por uno.

Saludos y gracias por su tiempo.

2014-07-02 14:31 GMT-05:00 Jaime Giraldo <sposmen(at)gmail(dot)com>:

> A modo personal te recomiendo 3 aspectos:
>
>
> 1. Verifica los indices basado en los explain (
> http://www.postgresql.org/docs/9.2/static/using-explain.html) para
> verificar que tienes los índices necesarios. Recuerda que en ocasiones
> pueden ocupar más espacio que la misma información, pero son un punto clave
> a la hora del performance.
> 2. Realiza un Mantenimiento a la base de datos con vacuum Full y
> reindex.
> 3. Genera los mismos queries con LEFT/RIGHT JOIN ya que estos son
> agregados en el proceso y no luego de realizar las consultas internas en IN.
>
> Espero que estos 3 puntos te puedan ayudar.
>
> JG.
>
>
> El 2 de julio de 2014, 13:49, Ivan Perales M. <ivan(dot)perales(at)gmail(dot)com>
> escribió:
>
> La situación es la siguiente:
>>
>> Tengo una tabla que no crece mucho, aprox 15 mil registros por mes. Esta
>> tabla contiene los creditos que se le otorgan a las personas, por lo tanto
>> tiene un status de si esta nuevo, abonado, pagado, embargado, etc.
>>
>> El control de los pagos los hacen en otro sistema, el cual mes a mes
>> envian un listado en excel con todos los creditos activos, sean nuevos o
>> atrasados, los que no aparecen significa que estan terminados, sin embargo
>> pueden reaparecer creditos terminados lo que significa que se reabrean.
>>
>> Este listado como les digo trae alrededor de 15 mil registros. Entonces
>> lo que yo hago es buscar solo los creditos pendienes y los cacheo. Entonces
>> luego por cada credito en el listado busco si ya existe para reabrilo o
>> actualizar el saldo, si no existe para crearlo y al terminar el proceso
>> todos los que estaban pendientes que ya no aparecieron en el listado los
>> termino.
>>
>> 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. Cabe mencionar que el equipo que funciona como server no es
>> de lo mejor, por eso tambien afecta la velocidad.
>>
>> Mi pregunta es, si ustedes han tenido alguna situacion similar que
>> pudieran darme algun consejo, alguna tabla cache o algun otro metodo para
>> poder agilizar este proceso.
>>
>> Saludos y buen dia
>>
>> --
>> Lindolfo Iván Perales Mancinas
>> Solo existen 10 tipos de personas en el mundo, las que saben binario y
>> las que no.
>>
>
>
>
> --
> Jaime Alberto Giraldo J.
> " La madurez del hombre es haber vuelto a encontrar la seriedad con la
> que jugaba cuando era niño"
> Friedrich Wilhelm Nietzsche
>

--
Lindolfo Iván Perales Mancinas
Solo existen 10 tipos de personas en el mundo, las que saben binario y las
que no.

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Luz María García Reyna 2014-07-02 20:28:06 Funcion PostGis
Previous Message Ivan Perales M. 2014-07-02 18:49:39 Performarce para 15 mil queries