From: | Carlos Eduardo Sotelo Pinto <carlos(dot)sotelo(dot)pinto(at)gmail(dot)com> |
---|---|
To: | Alvaro Herrera <alvherre(at)2ndquadrant(dot)com> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: [pgsql-es-ayuda] Fwd: Help on ṕerformance |
Date: | 2013-09-30 16:16:33 |
Message-ID: | CAEhw=E8PSp0MPzPbPX4DK51GXd_THZ7S8t3AgtVrMXULtxnrxg@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda pgsql-general pgsql-performance |
Hola Alvaro
He solucionado parcialmente el problema haciendo una consulta del tipo
arr := regexp_split_to_array(_imeis, E'\\s+');
RETURN QUERY
SELECT
gpstracking_device_tracks.....
FROM (
SELECT
gpstracking_device_tracks......
ROW_NUMBER() OVER(PARTITION BY gpstracking_device_tracks.imei ORDER BY
gpstracking_device_tracks.date_time_process DESC) as rnumber
FROM gpstracking_device_tracks
WHERE gpstracking_device_tracks.imei = ANY(arr)
AND gpstracking_device_tracks.date_time_process >= date_trunc('hour',
now())
AND gpstracking_device_tracks.date_time_process <= NOW()
) AS gpstracking_device_tracks
WHERE gpstracking_device_tracks.rnumber = 1;
Y ahora estoy leyendo un poco de tuning, ya que no soy un dba ni menos un
experto en optimización, pero espero pueda mejorar aun más el rendimiento
Muchas gracias por la ayuda de todos
El 30 de septiembre de 2013 11:12, Alvaro
Herrera<alvherre(at)2ndquadrant(dot)com>escribió:
> Carlos Eduardo Sotelo Pinto escribió:
>
> > DECLARE
> > arr varchar[];
> > BEGIN
> > arr := regexp_split_to_array(_imeis, E'\\s+');
> > FOR i IN 1..array_length(arr, 1) LOOP
> > RETURN QUERY
>
> Creo que deberías hacer una única consulta con todos los elementos del
> array, en lugar de una consulta para cada elemento. Es decir, elimina
> el LOOP y el LIMIT 1, y tu WHERE debería ser algo como
>
> ...
>
> > FROM gpstracking_device_tracks
> > WHERE gpstracking_device_tracks.imei = arr[i]::VARCHAR
>
> WHERE gpstracking_device_tracks.imei = ANY (arr) AND ...
>
> Vas a tener que solucionar de otra forma el que te retorne sólo una fila
> para cada imei, claro.
>
> --
> Álvaro Herrera http://www.2ndQuadrant.com/
> PostgreSQL Development, 24x7 Support, Training & Services
>
--
Carlos Eduardo Sotelo Pinto | http://carlossotelo.com | csotelo(at)twitter
GNU Linux Admin | PHP Senior Web Developer
Mobil: RPC (Claro)+51, 958194614 | Mov: +51, 959980794
GTalk: carlos(dot)sotelo(dot)pinto(at)gmail(dot)com | Skype: csotelop
MSN: carlos(dot)sotelo(dot)pinto(at)gmail(dot)com | Yahoo: csotelop
GNULinux RU #379182 | GNULinux RM #277661
GPG FP:697E FAB8 8E83 1D60 BBFB 2264 9E3D 5761 F855 4F6B
From | Date | Subject | |
---|---|---|---|
Next Message | Gilberto Castillo | 2013-09-30 16:25:29 | Re: [pgsql-es-ayuda] Fwd: Help on ṕerformance |
Previous Message | Alvaro Herrera | 2013-09-30 16:12:20 | Re: Fwd: Help on ṕerformance |
From | Date | Subject | |
---|---|---|---|
Next Message | Ryan Kelly | 2013-09-30 16:18:36 | Re: psql swallowed my "BEGIN;" on reset... user beware? |
Previous Message | Ryan Kelly | 2013-09-30 16:15:37 | Re: psql swallowed my "BEGIN;" on reset... user beware? |
From | Date | Subject | |
---|---|---|---|
Next Message | Gilberto Castillo | 2013-09-30 16:25:29 | Re: [pgsql-es-ayuda] Fwd: Help on ṕerformance |
Previous Message | Alvaro Herrera | 2013-09-30 16:12:20 | Re: Fwd: Help on ṕerformance |