Skip site navigation (1) Skip section navigation (2)

Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] Re: [pgsql

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
Date: 2010-09-22 18:23:14
Message-ID: AANLkTinr-9NRhR-Uj_3tzM3Z-mU1tOu5gjM_EkbMbrCx@mail.gmail.com (view raw or flat)
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

In response to

pgsql-es-ayuda by date

Next:From: Alvaro HerreraDate: 2010-09-22 20:06:33
Subject: Re: Re: [pgsql-es-ayuda] Búsqueda de palabras con Acentos
Previous:From: Guillermo VillanuevaDate: 2010-09-22 16:30:46
Subject: postgres en ubuntu server

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group