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 <silv...@gmail.com> escribió: > El día 13 de abril de 2011 16:43, Alvaro Herrera > <alvhe...@alvh.no-ip.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 >