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/
