From: | Jaime Casanova <jaime(at)2ndquadrant(dot)com> |
---|---|
To: | Miguel Panuera <mpanuera(at)gmail(dot)com> |
Cc: | josemanuelruizbaena(at)gmail(dot)com, PostgreSQL <pgsql-es-ayuda(at)postgresql(dot)org>, Román Mussi <romanmussi(at)nitrico(dot)com(dot)ar> |
Subject: | Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] Búsqueda de palabras con Acentos |
Date: | 2010-09-22 18:23:14 |
Message-ID: | AANLkTinr-9NRhR-Uj_3tzM3Z-mU1tOu5gjM_EkbMbrCx@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
2010/9/22 Miguel Panuera <mpanuera(at)gmail(dot)com>:
> Buenas, al realizar estas funciones,
> tambien se deberia crear un indice con la funcion para optimizar la
> busqueda????????
>
En este caso no, porque esta usando ILIKE y ese operador nunca usa
indices ademas la funcion sp_ascii esta siendo declarada volatile,
pero si haces esto:
CREATE OR REPLACE FUNCTION sp_ascii(character varying)
RETURNS text AS
$BODY$
SELECT TRANSLATE
($1,
'áàâãäéèêëíìïóòôõöúùûüÁÀÂÃÄÉÈÊËÍÌÏÓÒÔÕÖÚÙÛÜçÇ',
'aaaaaeeeeiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcC');
$BODY$
LANGUAGE 'sql' IMMUTABLE;
(no veo problema en declarar la funcion IMMUTABLE, o la hay?)
CREATE INDEX idx_ascii_apellido ON nombres (lower(sp_ascii(apellido1)));
SELECT * FROM nombres WHERE lower(sp_ascii(apellido1)) LIKE
lower(sp_ascii('martin'));
deberia funcionar
--
Jaime Casanova www.2ndQuadrant.com
Soporte y capacitación de PostgreSQL
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2010-09-22 20:06:33 | Re: Re: [pgsql-es-ayuda] Búsqueda de palabras con Acentos |
Previous Message | Guillermo Villanueva | 2010-09-22 16:30:46 | postgres en ubuntu server |