Re: problema con query lento

From: Diego Ayala <netdiego81(at)gmail(dot)com>
To: Silvio Quadri <silvioq(at)gmail(dot)com>
Cc: Postgres Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: problema con query lento
Date: 2011-04-14 13:40:30
Message-ID: BANLkTimJ0LS82xMG=AF4aEYAntxRod+VRw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Silvio, realmente ahora si no entiendo nada.. le cambie el order by por otro
campo, que no es el item.id y el explain m devuelve esto,
explain analyze SELECT llamado_grupo.id as grupo_id,llamado_grupo.nro_
grupo, llamado_grupo.abastecimiento_simultaneo,
llamado_grupo.contrato_abierto , item.id as item_id, item.cantidad,
item.cantidad_minima, item.descripcion,
item.estado, item.nro_linea, item.precio_promedio_catalogo,
item.precio_unitario, item.unidad_medida,
item.zona,producto_n5.id as prod_id,producto_n5.codigo,
item.usuario_alta
FROM sicp.item_solicitado item
INNER JOIN catalogo.producto_n5 producto_n5 on item.producto_n5_id=
producto_n5.id
INNER JOIN sicp.llamado_grupo llamado_grupo on llamado_grupo.id =
item.llamado_grupo_id
WHERE llamado_grupo.llamado_id = 127968
and item.ver= true
order by item.nro_linea
desc limit 10
offset 0

"Limit (cost=7092.42..7092.45 rows=10 width=127) (actual time=0.193..0.199
rows=2 loops=1)"
" -> Sort (cost=7092.42..7099.73 rows=2924 width=127) (actual
time=0.191..0.193 rows=2 loops=1)"
" Sort Key: item.nro_linea"
" Sort Method: quicksort Memory: 25kB"
" -> Nested Loop (cost=0.00..7029.24 rows=2924 width=127) (actual
time=0.146..0.177 rows=2 loops=1)"
" -> Nested Loop (cost=0.00..6203.84 rows=2924 width=115)
(actual time=0.131..0.150 rows=2 loops=1)"
" -> Index Scan using idx_llamado_grupo_id_llamado_id on
llamado_grupo (cost=0.00..54.30 rows=27 width=14) (actual time=0.085..0.090
rows=2 loops=1)"
" Index Cond: (llamado_id = 127968)"
" -> Index Scan using idx_item_llamado_grupo_id_item_id
on item_solicitado item (cost=0.00..226.41 rows=108 width=109) (actual
time=0.024..0.025 rows=1 loops=2)"
" Index Cond: (item.llamado_grupo_id =
llamado_grupo.id)"
" Filter: item.ver"
" -> Index Scan using producto_n5_pkey on producto_n5
(cost=0.00..0.27 rows=1 width=20) (actual time=0.008..0.009 rows=1 loops=2)"
" Index Cond: (producto_n5.id = item.producto_n5_id)"
"Total runtime: 0.333 ms"

Cambio totalmente el resultado con solo cambiar el campo por el cual
ordenaba(antes era item.id, ahora le puse item.nro_linea), esto en
produccion... por que en desarrollo con el campo item.id en order by, igual
m arrojaba un buen plan..

El 13 de abril de 2011 16:09, Silvio Quadri <silvioq(at)gmail(dot)com> escribió:

> El día 13 de abril de 2011 16:43, Alvaro Herrera
> <alvherre(at)alvh(dot)no-ip(dot)org> escribió:
> > Excerpts from Diego Ayala's message of mié abr 13 16:34:10 -0300 2011:
> >> estos son los indices sobre la tabla item_solicitado
> >
> > Es posible que esta consulta se beneficie de este indice:
> >
> > create index llamado_grupo_id_llamado_id on llamado_grupo (id,
> llamado_id);
> >
> > Pruebalo y nos cuentas
> >
>
> Si no funciona probá también
> a) modificar el índice (llamado_grupo_id) por (llamado_grupo_id, id desc).
> b) sacarle el order del final a ver si cambia el plan.
> c) Hacelo con un join implícito, es muy poco probable que cambie algo,
> pero no cuesta nada.
>
> Silvio
>

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Juan Manuel Acuña Barrera 2011-04-14 14:47:57 Presentación y solicitud de recomendación
Previous Message Crispin T. 2011-04-14 13:22:50 problema con insert bytea