From: | "Omar Zeballos \(Kantutani\)" <ozeballos(at)kantutani(dot)com> |
---|---|
To: | <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Problema de Performance con Query |
Date: | 2006-10-31 01:01:27 |
Message-ID: | 001701c6fc88$18804890$1600a8c0@serverbi |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Lista,
tengo un query de la sgte forma:
select count(*)
from v_kardex
where coddocumento = 'VTA'
and cantidad > 0
and fecha = '2006-10-01'
Esto me tarda 4 segundos.
cuando modifico a:
select count(*)
from v_kardex
where coddocumento = 'VTA'
and fecha between '2006-10-01' and '2006-10-01'
o
select count(*)
from v_kardex
where coddocumento = 'VTA'
and fecha >= '2006-10-01'
and fecha <= '2006-10-01'
Tarda 3 minutos. como veran necesito dar el rango. Hay algo mal que este haciendo,
Tengo un indice por coddocumento y fecha, uso Postgres 8.1.3 bajo Linux RH.
Existe algu problema con la sentencia between o con la comparación del mismo campo en la sentencia.
EL EXPLAIN PLAN DE LA 1ra OPCION (LA RAPIDA ES)
Aggregate (cost=55245.14..55245.15 rows=1 width=428)
-> Merge Join (cost=54312.89..55238.44 rows=2678 width=428)
Merge Cond: ("outer".seqkdxdocumento = "inner".seqkdxdocumento)
-> Sort (cost=835.81..837.21 rows=558 width=171)
Sort Key: a.seqkdxdocumento
-> Bitmap Heap Scan on kdx_documentos a (cost=6.35..810.36 rows=558 width=171)
Recheck Cond: (((coddocumento)::text = 'VTA'::text) AND (fecha = '2006-10-01'::date))
-> Bitmap Index Scan on idx_coddocfecha (cost=0.00..6.35 rows=558 width=0)
Index Cond: (((coddocumento)::text = 'VTA'::text) AND (fecha = '2006-10-01'::date))
-> Sort (cost=53477.08..53925.24 rows=179265 width=269)
Sort Key: b.seqkdxdocumento
-> Seq Scan on kdx_kardex b (cost=0.00..6509.65 rows=179265 width=269)
EL EXPLAIN PLAN DE LA 2da OPCION ES (La lenta)
Aggregate (cost=8755.03..8755.04 rows=1 width=428)
-> Nested Loop (cost=0.00..8755.02 rows=5 width=428)
Join Filter: ("outer".seqkdxdocumento = "inner".seqkdxdocumento)
-> Index Scan using idx_coddocfecha on kdx_documentos a (cost=0.00..4.56 rows=1 width=171)
Index Cond: (((coddocumento)::text = 'VTA'::text) AND (fecha >= '2006-10-01'::date) AND (fecha <= '2006-10-01'::date))
-> Seq Scan on kdx_kardex b (cost=0.00..6509.65 rows=179265 width=269)
Saludos,
_________________________________________________________________
Omar Zeballos Céspedes
Int 2601
ozeballos(at)mailserver
La Paz - Bolivia
_________________________________________________________________
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2006-10-31 01:13:11 | Re: problemas bytea con php |
Previous Message | Alvaro Herrera | 2006-10-30 19:18:52 | Re: ejecucion de procedimientos |