Ayuda a interpretar resultado EXPLAIN ANALYZE

From: "Linder Poclaba" <linder(dot)poclaba(at)gmail(dot)com>
To: "lista postrges" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Ayuda a interpretar resultado EXPLAIN ANALYZE
Date: 2006-10-20 17:14:51
Message-ID: 5aa69e1b0610201014x22f5c1a3l89c076f428ae9426@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola amigos de las lista.

No sé si me podrian colaborar en la interpretación del resultado que me vota
EXPLAIN ANALYZE de las siguientes consultas y escoger la correcta, o alguna
otra sugerencias es bienvenida:

Tablas involucradas

rubro
Columna | Tipo | Modificadores
-------------+-----------------------+---------------
idrubro | integer | not null
descripcion | character varying(50) |
Índices:
"rubro_pkey" llave primaria, btree (idrubro)

formulario
Columna | Tipo | Modificadores
--------------+-----------------------+---------------
idformulario | integer | not null
nombre | character varying(25) |
Índices:
"formulario_pkey" llave primaria, btree (idformulario)

pliego
Columna | Tipo | Modificadores
--------------------+-------------------+---------------
idpliego | integer | not null
mesa_idmesa | integer | not null
descripcion | character varying |
plazo_referencial | integer |
adjudicado | boolean |
distrito | character varying |
cod_pliego | character varying |
precio_referencial | real |
rubro_idrubro | integer |
Índices:
"pliego_pkey" llave primaria, btree (idpliego)
Restricciones de llave foránea:
"$1" FOREIGN KEY (mesa_idmesa) REFERENCES mesa(idmesa)
"fk_rubro" FOREIGN KEY (rubro_idrubro) REFERENCES rubro(idrubro) ON
UPDATE RESTRICT ON DELETE RESTRICT

rubro_formulario
Columna | Tipo | Modificadores
-------------------------+---------+---------------
idrubro_formulario | integer | not null
formulario_idformulario | integer |
rubro_idrubro | integer |
Índices:
"rubro_formulario_pkey" llave primaria, btree (idrubro_formulario)
Restricciones de llave foránea:
"$1" FOREIGN KEY (formulario_idformulario) REFERENCES
formulario(idformulario)
"$2" FOREIGN KEY (rubro_idrubro) REFERENCES rubro(idrubro)

como parametros de la consulta tengo el id del pliego(un pliego pertenece a
un determinado rubro y un rubro puede tener muchos pliegos), y se quiere
mostrar todos los formularios para ese pliego, la relacion de rubro y pliego
es de muchos a muchos.

las consultas son:

explain analyze select * from formulario where idformulario in (select
formulario_idformulario from rubro_formulario where rubro_idrubro in (SELECT
rubro_idrubro from pliego where idpliego=14));
QUERY PLAN
----------------------------------------------------------------------------------------------------------------------
Nested Loop IN Join (cost=0.00..1.26 rows=1 width=59) (actual time=
0.094..0.416 rows=3 loops=1)
Join Filter: ("outer".idformulario = "inner".formulario_idformulario)
-> Seq Scan on formulario (cost=0.00..0.00 rows=1 width=59) (actual
time=0.012..0.045 rows=5 loops=1)
-> Nested Loop IN Join (cost=0.00..1.25 rows=1 width=4) (actual time=
0.025..0.058 rows=2 loops=5)
Join Filter: ("outer".rubro_idrubro = "inner".rubro_idrubro)
-> Seq Scan on rubro_formulario (cost=0.00..0.00 rows=1 width=8)
(actual time=0.004..0.010 rows=2 loops=5)
-> Seq Scan on pliego (cost=0.00..1.24 rows=1 width=4) (actual
time=0.010..0.010 rows=1 loops=12)
Filter: (idpliego = 14)
Total runtime: 0.502 ms
(9 filas)

la otra:

explain analyze SELECT f.idformulario,f.nombre from formulario f join
rubro_formulario rf on f.idformulario = rf.formulario_idformulario join
pliego p on p.rubro_idrubro=rf.rubro_idrubro where p.idpliego=14 order by
f.idformulario;
QUERY PLAN
-------------------------------------------------------------------------------------------------------------------------------
Sort (cost=1.27..1.28 rows=1 width=59) (actual time=0.313..0.321 rows=3
loops=1)
Sort Key: f.idformulario
-> Nested Loop (cost=0.00..1.26 rows=1 width=59) (actual time=
0.089..0.284 rows=3 loops=1)
Join Filter: ("inner".idformulario =
"outer".formulario_idformulario)
-> Nested Loop (cost=0.00..1.25 rows=1 width=4) (actual time=
0.047..0.143 rows=3 loops=1)
Join Filter: ("inner".rubro_idrubro = "outer".rubro_idrubro)
-> Seq Scan on rubro_formulario rf (cost=0.00..0.00 rows=1
width=8) (actual time=0.011..0.020 rows=3 loops=1)
-> Seq Scan on pliego p (cost=0.00..1.24 rows=1 width=4)
(actual time=0.013..0.025 rows=1 loops=3)
Filter: (idpliego = 14)
-> Seq Scan on formulario f (cost=0.00..0.00 rows=1 width=59)
(actual time=0.004..0.020 rows=5 loops=3)
Total runtime: 0.410 ms
(11 filas)

desde ya muchas gracias :)

--
Linder Poclaba Lázaro.
Desarrollador Key Optimal Solutions - KEYOS.
Usa Software Libre y obtiene tú libertad.

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Pedro Mateo 2006-10-20 17:56:34 ya hice mi primera funcion
Previous Message Alvaro Herrera 2006-10-20 14:42:20 Re: Reglas/Triggers