Consulta no usa los indices

From: William Diaz Pabón <widipa(at)gmail(dot)com>
To: PostgreSQL Español Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Consulta no usa los indices
Date: 2014-03-14 15:29:49
Message-ID: CAGrLqMbcBGUV7Y6RgDD4K4uGWs+m=BY0qLSqXBjYyXrbdhKk4g@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola lista.

Tengo la siguiente consulta:

SELECT
tarifa.consecutivo AS tarifa,
caracteristica_predio_oi_predio.oi_predio
FROM tarifa
JOIN caracteristica_predio_tarifa ON
caracteristica_predio_tarifa.tarifa::text = tarifa.consecutivo::text

JOIN caracteristica_predio_oi_predio ON
caracteristica_predio_oi_predio.caracteristica_predio::text =
caracteristica_predio_tarifa.caracteristica_predio::text
AND caracteristica_predio_oi_predio.estado::text = 'ACTIVO'::text
AND (caracteristica_predio_oi_predio.vigencia::text = ''::text OR
caracteristica_predio_oi_predio.vigencia IS NULL OR
caracteristica_predio_oi_predio.vigencia::text = tarifa.vigencia::text)

WHERE tarifa.estado::text = 'ACTIVO'::text

Y a las tablas le cree los siguientes indices:

CREATE INDEX tarifa_estado_ix
ON tarifa USING btree (estado ASC NULLS LAST);

CREATE INDEX caracteristica_predio_oi_predio_estado_ix
ON caracteristica_predio_oi_predio USING btree (estado ASC NULLS LAST);

CREATE INDEX caracteristica_predio_oi_predio_caracteristica_predio_ix
ON caracteristica_predio_oi_predio USING btree (caracteristica_predio
ASC NULLS LAST);

CREATE INDEX caracteristica_predio_oi_predio_vigencia_ix
ON caracteristica_predio_oi_predio USING btree (vigencia ASC NULLS LAST);

CREATE INDEX caracteristica_predio_oi_predio_vigencia_estado_ix
ON caracteristica_predio_oi_predio USING btree (vigencia, estado);

Pero haciendo un explain no los toma:

"Hash Join (cost=62.82..2455.25 rows=102826 width=11)"
" Output: tarifa.consecutivo, caracteristica_predio_oi_predio.oi_predio"
" Hash Cond:
((caracteristica_predio_oi_predio.caracteristica_predio)::text =
(caracteristica_predio_tarifa.caracteristica_predio)::text)"
" Join Filter: (((caracteristica_predio_oi_predio.vigencia)::text =
''::text) OR (caracteristica_predio_oi_predio.vigencia IS NULL) OR
((caracteristica_predio_oi_predio.vigencia)::text =
(tarifa.vigencia)::text))"
" -> Seq Scan on caracteristica_predio_oi_predio (cost=0.00..162.44
rows=8595 width=29)"
" Output: caracteristica_predio_oi_predio.consecutivo,
caracteristica_predio_oi_predio.caracteristica_predio,
caracteristica_predio_oi_predio.oi_predio,
caracteristica_predio_oi_predio.vigencia,
caracteristica_predio_oi_predio.estado"
" Filter: ((estado)::text = 'ACTIVO'::text)"
" -> Hash (cost=59.97..59.97 rows=228 width=13)"
" Output: tarifa.consecutivo, tarifa.vigencia,
caracteristica_predio_tarifa.caracteristica_predio"
" -> Hash Join (cost=7.13..59.97 rows=228 width=13)"
" Output: tarifa.consecutivo, tarifa.vigencia,
caracteristica_predio_tarifa.caracteristica_predio"
" Hash Cond: ((tarifa.consecutivo)::text =
(caracteristica_predio_tarifa.tarifa)::text)"
" -> Seq Scan on tarifa (cost=0.00..44.66 rows=1573
width=10)"
" Output: tarifa.consecutivo, tarifa.avaluo_inicial,
tarifa.avaluo_final, tarifa.destino_economico, tarifa.tipo_predio,
tarifa.tarifa, tarifa.estado, tarifa.area_construida_inicial,
tarifa.area_construida_final, tarifa.area_terreno_inicial,
tarifa.area_terreno_final, tarifa.estrato, tarifa.tipo,
tarifa.fecha_cambio, tarifa.registrado_por, tarifa.fecha_creacion,
tarifa.usuario_creacion, tarifa.vigencia,
tarifa.porcentaje_limite_incremento, tarifa.uso_predio"
" Filter: ((estado)::text = 'ACTIVO'::text)"
" -> Hash (cost=4.28..4.28 rows=228 width=8)"
" Output: caracteristica_predio_tarifa.tarifa,
caracteristica_predio_tarifa.caracteristica_predio"
" -> Seq Scan on caracteristica_predio_tarifa
(cost=0.00..4.28 rows=228 width=8)"
" Output: caracteristica_predio_tarifa.tarifa,
caracteristica_predio_tarifa.caracteristica_predio"

Que puedo hacer para que la consulta sea más rápida?

--
Éxitos.

Cordialmente,

*William Diaz Pabón*

*, Especialista en Soluciones Informáticas*

Bogotá, Colombia
Tel: +57 (300) 3917774

http://planetapleno.blogspot.com/
http://tutorialestecnicos.blogspot.com/

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2014-03-14 15:38:22 Re: Consulta no usa los indices
Previous Message Anthony Rafael Sotolongo León 2014-03-13 20:24:33 Re: Fwd: Ubicar los tipos de datos creados