Re[2]: velocidad en consulta con like

From: Ever Daniel Barreto Rojas <ebarreto(at)nexusit(dot)com(dot)py>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re[2]: velocidad en consulta con like
Date: 2007-05-30 01:31:19
Message-ID: 72421718.20070529213119@nexusit.com.py
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

álvaro:

El 29/05/2007 a las 08:26 p.m., escribiste:
> Prueba creando un indice asi:
> create index foobar on per_nombres (per_apellidos varchar_pattern_ops,
> per_nombres varchar_pattern_ops)
> Es posible que sea mas conveniente crear el indice solamente con el
> apellido. Esto significaria que tendria que recorrer todas las personas
> de un mismo apellido y filtrar segun el nombre despues, lo que significa
> recorrer una mayor parte del indice, pero por otro lado cada entrada del
> indice sera menor por lo tanto el indice sera menor, por lo tanto
> tendras mejor uso del cache.

explain analyze
select *
from vw_personas
where per_nombres like 'EVER DA%' and per_apellidos like 'BARRETO R%'

"Sort (cost=11.54..11.55 rows=1 width=2252) (actual time=0.480..0.482 rows=1 loops=1)"
" Sort Key: persona.per_apellidos, persona.per_nombres"
" -> Nested Loop (cost=0.00..11.53 rows=1 width=2252) (actual time=0.334..0.432 rows=1 loops=1)"
" Join Filter: (persona.idecivil = ec.idecivil)"
" -> Nested Loop (cost=0.00..10.44 rows=1 width=2239) (actual time=0.318..0.401 rows=1 loops=1)"
" Join Filter: (persona.idtdoc = td.idtdoc)"
" -> Index Scan using idx_personas on persona (cost=0.00..9.38 rows=1 width=2203) (actual time=0.287..0.361 rows=1 loops=1)"
" Index Cond: (((per_apellidos)::text ~>=~ 'BARRETO R'::character varying) AND ((per_apellidos)::text ~<~ 'BARRETO S'::character varying) AND ((per_nombres)::text ~>=~ 'EVER DA'::character varying) AND ((per_nombres)::text ~<~ 'EVER DB'::character varying))"
" Filter: (((per_nombres)::text ~~ 'EVER DA%'::text) AND ((per_apellidos)::text ~~ 'BARRETO R%'::text))"
" -> Seq Scan on tipo_documento td (cost=0.00..1.03 rows=3 width=40) (actual time=0.006..0.010 rows=3 loops=1)"
" -> Seq Scan on estado_civil ec (cost=0.00..1.04 rows=4 width=17) (actual time=0.004..0.011 rows=4 loops=1)"
"Total runtime: 3.781 ms"

creo que no hace falta decir nada, esto funcionó de perlas!!!...
muchísimas gracias!!!

el índice creado:
CREATE INDEX idx_personas
ON persona
USING btree
(per_apellidos varchar_pattern_ops, per_nombres varchar_pattern_ops);

encontré en el manual lo que me sugeriste bajo "Operator Class",
hay algun lugar en donde pueda encontrar más información?

Cordiales saludos,

-------------------
Ever Daniel Barreto Rojas
e.mail: ebarreto(at)nexusit(dot)com(dot)py :: Nexus Information Technologies
web: www.nexusit.com.py
29/05/2007 09:18 p.m.

---------------------
Cuando menos sabes,
más crees...
---------------------

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message mauricio lay 2007-05-30 02:31:09 Re: comienzo en postgresql
Previous Message usuario anonimo 2007-05-30 00:51:50 Re: comienzo en postgresql