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
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
------------------------------------------------

Responses

Browse pgsql-es-ayuda by date

  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