Indices y vistas

From: Conrado Blasetti <conrado(at)mapfre(dot)com(dot)ar>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Indices y vistas
Date: 2005-10-19 15:10:31
Message-ID: 65746BCC3D99E44998976FD845AD6E6E0DC4602B@MAIL
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Buenos días a todos.

Tengo la siguiente tabla y vista de mas abajo:

CREATE TABLE tipos
(
id_tipo int8 NOT NULL,
cod_tipo_valido int8 NOT NULL,
cod_tipo int8 NOT NULL,
desc_tipo varchar(30) NOT NULL,
desc_tipo_red varchar(5) NOT NULL,
fec_equipo timestamp NOT NULL,
fec_alta date NOT NULL,
cod_user_alta varchar(8) NOT NULL,
fec_baja date,
cod_user_baja varchar(8),
CONSTRAINT tipos_pk PRIMARY KEY (id_tipo),
)

CREATE UNIQUE INDEX tipos_i0
ON tipos
USING btree
(cod_tipo_valido, cod_tipo);

"700100";"700";"100";"PADRE";"PADRE";"2005-09-26
08:28:27.761";"2005-09-26";"USUARIO";"";""
"700101";"700";"101";"MADRE";"MADRE";"2005-09-26
08:28:53.668";"2005-09-26";"USUARIO";"";""
"700102";"700";"102";"ENCARGADA/O";"TUTOR";"2005-09-26
08:29:11.855";"2005-09-26";"USUARIO";"";""
"700103";"700";"103";"DOCENTES";"DOC";"2005-09-26
00:00:00";"2005-09-26";"USUARIO";"";""

CREATE OR REPLACE VIEW w_entidades AS
SELECT tipos.id_tipo AS id,
tipos.cod_tipo_valido AS codigo,
tipos.cod_tipo AS sub_codigo,
tipos.desc_tipo_red AS desc_red,
tipos.desc_tipo AS descripcion,
tipos.fec_equipo,
tipos.fec_alta,
tipos.cod_user_alta,
tipos.fec_baja,
tipos.cod_user_baja
FROM tipos
WHERE tipos.cod_tipo_valido = 700
ORDER BY tipos.desc_tipo_red;

Bien, con esta estructura de datos, las consultas que tengo son las
siguientes en base a los que arroja el explain analyze de la vista y de un
select directamente a la tabla

explain analyze select * from w_entidades

"Subquery Scan w_entidades (cost=1.71..1.73 rows=1 width=178) (actual
time=0.000..0.000 rows=4 loops=1)"
" -> Sort (cost=1.71..1.72 rows=1 width=178) (actual time=0.000..0.000
rows=4 loops=1)"
" Sort Key: tipos.desc_tipo_red"
" -> Seq Scan on tipos (cost=0.00..1.70 rows=1 width=178) (actual
time=0.000..0.000 rows=4 loops=1)"
" Filter: (cod_tipo_valido = 700)"
"Total runtime: 0.000 ms"

explain analyze SELECT tipos.id_tipo AS id,
tipos.cod_tipo_valido AS codigo,
tipos.cod_tipo AS sub_codigo,
tipos.desc_tipo_red AS desc_red,
tipos.desc_tipo AS descripcion,
tipos.fec_equipo,
tipos.fec_alta,
tipos.cod_user_alta,
tipos.fec_baja,
tipos.cod_user_baja
FROM tipos
WHERE tipos.cod_tipo_valido = 700
ORDER BY tipos.desc_tipo_red;

"Sort (cost=1.71..1.72 rows=1 width=178) (actual time=0.000..0.000 rows=4
loops=1)"
" Sort Key: desc_tipo_red"
" -> Seq Scan on tipos (cost=0.00..1.70 rows=1 width=178) (actual
time=0.000..0.000 rows=4 loops=1)"
" Filter: (cod_tipo_valido = 700)"
"Total runtime: 0.000 ms"

1º Las dos consultas a la base son iguales de optimas?, ya que me llama la
antencion que en el select a la vista detalla:
"Subquery Scan w_entidades (cost=1.71..1.73 rows=1 width=178) (actual
time=0.000..0.000 rows=4 loops=1)"
que el select a la tabla en bruto no aparece.

2º Teniendo un indice por cod_tipo_valido, por que las dos consultas entra
por Seq Scan y no por indice?

Bueno, desde ya, gracias
Saludos,
Conrado

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Dario 2005-10-19 15:17:37 RE: linux rh 9, postgres 802 rpms
Previous Message Rhona Aponte 2005-10-19 15:08:54 Ya no quiero estar suscrita