Re: Performarce para 15 mil queries

From: Brian Colman <brian(at)bricosolutions(dot)com>
To: "Ivan Perales M(dot)" <ivan(dot)perales(at)gmail(dot)com>
Cc: 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-03 16:20:10
Message-ID: CAGd21dh6QsEZRkrsXov3boBHY_7oMnQoE__q1yT1WockQRNxvg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El tema de la tabla temporal que comentan es mucho mejor pero es mas
esfuerzo, si antes era rapido y ahora lento, suena a que la tabla no tiene
indice por el campo que haces el where, podes probar haciendo un explain y
si es el caso crear el indice, creo que ahi recuperarias +o- a como era
antes y te da tiempo para hacer lo de la tabla temporal con menos apuro.
Mi humilde opinión.

Suerte!

El 2 de julio de 2014, 15:54, Ivan Perales M. <ivan(dot)perales(at)gmail(dot)com>
escribió:

> 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.
>

--
Brian Colman Miers
brian(at)bricosolutions(dot)com

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message elvis regalado 2014-07-03 16:52:32 manuales
Previous Message Alvaro Herrera 2014-07-02 21:35:10 Re: Performarce para 15 mil queries