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 |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
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
------------------------------------------------
From | Date | Subject | |
---|---|---|---|
Next Message | Alfredo García | 2006-08-24 15:48:32 | VFP + PostgreSQL |
Previous Message | Espartano | 2006-08-24 15:01:54 | Re: DBase para Postgresql |