Problema de Performance con Query

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
_________________________________________________________________

Responses

Browse pgsql-es-ayuda by date

  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