Re: Cual es el mejor uso de indices en esta tabla ?¿

From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: juan <juanramirez(at)cajazacate(dot)com(dot)sv>
Cc: pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Cual es el mejor uso de indices en esta tabla ?¿
Date: 2009-08-18 02:42:16
Message-ID: 20090818024216.GP4782@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

juan escribió:

> Si las consultas que hare son de este tipo:
> select * from personas where apellido1 ilike '%JUAN%' and apellido
> ilike '%RAMIREZ%'

Una consulta como esa sólo tendría sentido si esperaras que un usuario
ingresara una búsqueda con "mirez" y esperara que el sistema retornara
Ramirez. Si no es así, entonces no pongas el % al principio:

select * from personas where nombre ilike 'JUAN%' and apellido ilike 'RAMIREZ%'

Si lo haces de esta forma, el sistema puede usar un índice btree común y
corriente:

create index apellido1_idx on personas (apellido1);
create index nombre_idx on personas (nombre);

Lo cierto es que va a tener problemas con el ILIKE y con los acentos,
así que te recomiendo que busques cómo hacer índices con to_lower y con
to_ascii o algún equivalente.

Para este caso creo que lo del text search no sería necesariamente muy
apropiado (a menos que quisieras que los usuarios pudieran ingresar
"beeth" y que retornara registros con "van Beethoven", o, más realista,
"jara" y que retornara "de la jara" además de "jara"). Yo no lo haría.

Finalmente, ten en cuenta que si bien para nosotros de costumbre
hispánica es correcto separar los apellidos en 1 y 2 (o más
concretamente en paterno y materno), no suele ser correcto separar los
nombres en 2; hay personas con un solo nombre, y otros con tres y
cuatro. Generalmente el modelo más correcto es "apellido paterno",
"apellido materno", "nombres".

--
Alvaro Herrera Developer, http://www.PostgreSQL.org/
"This is a foot just waiting to be shot" (Andrew Dunstan)

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message juan 2009-08-18 15:11:01 Re: [pgsql-es-ayuda] Cual es el mejor uso de indices en esta tabla ?¿
Previous Message Crispin T. 2009-08-18 02:35:43 Re: Crear modelo ER