Re: Primer query lento, los demas rapidos

From: L(dot)S(dot)C(dot) Zorobabel Vega Díaz <zvegad(at)dasi(dot)com(dot)mx>
To: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Primer query lento, los demas rapidos
Date: 2006-09-23 18:55:28
Message-ID: 001601c6df41$db3b9060$220110ac@ZVEGAD
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Ok, planteo el escenario entonces, no crei necesario la vez anterior por que
esto ocurre con cualquier tabla, cualquier query.

Mi tabla tiene 364,921 registros pero apenas cumplira 3 meses de operaciones
por lo que apenas esta creciendo :)

El resultado de explain es:
DB_P=# EXPLAIN ANALYZE
DB_P-# SELECT * FROM INVENTARIOS
DB_P-# WHERE TIPO='S' AND TIPOMOV='D1' AND folio='267600';
QUERY PLAN
----------------------------------------------------------------------------------------------------------------------------------
Index Scan using inventarios_idx5 on inventarios (cost=0.00..20.86 rows=8
width=158) (actual time=0.067..0.124 rows=11 loops=1)
Index Cond: (((tipo)::text = 'S'::text) AND ((tipomov)::text =
'D1'::text) AND ((folio)::text = '267600'::text))
Total runtime: 0.305 ms
(3 rows)

y he aqui mis indices

CREATE INDEX inventarios_idx1
ON inventarios
USING btree
(tipo, tipomov);

-- Index: inventarios_idx2

-- DROP INDEX inventarios_idx2;

CREATE INDEX inventarios_idx2
ON inventarios
USING btree
(tipo, almacen, producto, fecha, status);

-- Index: inventarios_idx3

-- DROP INDEX inventarios_idx3;

CREATE INDEX inventarios_idx3
ON inventarios
USING btree
(tipo, tipomov, fecha, almacen, status);

-- Index: inventarios_idx4

-- DROP INDEX inventarios_idx4;

CREATE INDEX inventarios_idx4
ON inventarios
USING btree
(tipo, tmdev, fecha, almacen, status);

-- Index: inventarios_idx5

-- DROP INDEX inventarios_idx5;

CREATE INDEX inventarios_idx5
ON inventarios
USING btree
(tipo, tipomov, folio);

repito no creo que esto sea problema de indices (aunque no esta descartado)
por que una vez ejecutado el primer query la operacion es excelente, pero
queria evitar la clasica queja de los usuarios debido a que en algunos casos
se llama una funcion que revisa 2 ó 3 tablas y la primer llamada tarda
alrededor de 5 segundos cuando en las siguientes 1 ó 2 segundos.

Ahora bien mi pregunta es este "cacheo" se realiza por cliente? o bien con
uno que corra la llamada queda listo para los que lo vallan llamando, a la
base de datos se conectan alrededor de 10 equipos en forma concurrente y 8
de ellos estan operando exactamente los mismos queries (cambiando por
supuesto los valores de la condicion)

Saludos

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2006-09-23 19:05:59 Re: Primer query lento, los demas rapidos
Previous Message Milton Galo Patricio 2006-09-23 17:35:12 Re: borrar registros repetidos