Skip site navigation (1) Skip section navigation (2)

Indices y mas indices....

From: "Roberto Guevara" <cygnus2k(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Indices y mas indices....
Date: 2006-08-24 15:39:08
Message-ID: 57650fe50608240839m6c8ee00esf73338960f8d7fe9@mail.gmail.com (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
Hola, este es mi primer post... asi que paciencia...


Tengo una tabla con un indice:

CREATE INDEX detmov_enti ON detmov USING btree (dm_emp, dm_enti,
dm_cta, dm_rnmov)

Si ejecuto lo siguiente:
----------------------------------------------------------------
SELECT * FROM admin.detmov
WHERE dm_emp=1
AND dm_enti=71
AND dm_cta LIKE '90000'
AND dm_rnmov IS NULL

ORDER BY dm_emp, dm_enti, dm_cta, dm_rnmov ;
-----------------------------------------------------------------

El EXPLAIN ANALIZE :
-----------------------------------------------------------------
Result  (cost=0.00..4.83 rows=1 width=390) (actual time=0.01..0.01
rows=0 loops=1)
  ->  Index Scan using detmov_enti on detmov  (cost=0.00..4.83 rows=1
width=390) (never executed)
        Index Cond: ((dm_emp = 1::numeric) AND (dm_enti = 71::numeric))
        Filter: (dm_rnmov IS NULL)
        Filter: (dm_cta ~~ '90000'::text)

Total runtime: 3.91 msec
-----------------------------------------------------------------

Me trae el siguiente resultado:

dm_emp	dm_tcom	dm_ope	dm_nmov	dm_cta	dm_conc	dm_sec	dm_cope	dm_cfin	dm_enti	dm_rtcom	dm_rope	dm_rnmov
1	FC	1	2136	90000	cdf	1	NULL

Que es el esperado.

Pero el Tiempo que requiere es muy alto. Y segun el planner esta
usando el indice, pero esta usando el filtro de texto por afuera del
indice, esto afecta a la velocidad, si la condicion estuviera adentro
del indice?  Porque si yo reemplazo el LIKE por el "=", lo usa en el
Index Cond, pero no me trae el resultado esperado, y no se porque (No
me trae nada).

------------------------------------------------------
Index Scan using detmov_enti on detmov  (cost=0.00..4.83 rows=1
width=390) (actual time=1.63..1.63 rows=0 loops=1)

  Index Cond: ((dm_emp = 1::numeric) AND (dm_enti = 71::numeric) AND
(dm_cta = '90000'::character varying))

  Filter: (dm_rnmov IS NULL)

Total runtime: 3.60 msec
------------------------------------------------

Responses

pgsql-es-ayuda by date

Next:From: Alfredo GarcíaDate: 2006-08-24 15:48:32
Subject: VFP + PostgreSQL
Previous:From: EspartanoDate: 2006-08-24 15:01:54
Subject: Re: DBase para Postgresql

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group