From: | Jaime Casanova <systemguards(at)gmail(dot)com> |
---|---|
To: | Gregorio Diaz <gregorio_diaz(at)yahoo(dot)com> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Consulta en SQL |
Date: | 2005-10-11 20:42:20 |
Message-ID: | c2d9e70e0510111342jd0fba3dh10edd693a6ac364a@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
On 10/11/05, Gregorio Diaz <gregorio_diaz(at)yahoo(dot)com> wrote:
> Hola mundo
>
> Disculpen si esta pregunta es muy tonta, pero es que
> soy muy nuevo en SQL y en PostgreSQL.
>
No hay preguntas tontas, solo gente tonta que no pregunta... :)
> Tengo una consulta similar a la siguiente:
>
>
> SELECT c1, c2, c3, c4, c5 FROM clientes WHERE
> LOWER(TO_ASCII(c1)) LIKE TO_ASCII('%palabra%')
> OR LOWER(TO_ASCII(c2)) LIKE TO_ASCII('%palabra%')
> OR LOWER(TO_ASCII(c3)) LIKE TO_ASCII('%palabra%')
> OR LOWER(TO_ASCII(c4)) LIKE TO_ASCII('%palabra%')
> OR LOWER(TO_ASCII(c5)) LIKE TO_ASCII('%palabra%') etc.
>
> La idea básica de esta búsqueda es encontrar los
> clientes que contengan una palabra, o unas letras en
> cualquier campo varchar de la tabla clientes (sin
> importar cuál), sin importar mayúsculas ni minúsculas
> ni tildes.
>
> Notas:
> - La expresión palabra ya se ha pasado a minúsculas en
> el Front-End
> - La tabla puede tener de 20 o 30 campos varchar y
> supongo que no sería lógico crear índices a todos
> ellos.
>
> ¿Cómo quedaría mucho más optima esta búsqueda?
>
>
> Muchas gracias
>
>
Pensastes bien en como complicarlo, verdad? :)
Hablando en serio, el simple hecho que tengas LIKE '%palabra%' ya hace
que la consulta sea poco eficiente, en el sentido de que no usaria un
indice aun cuando este disponible y la consulta te retorna una pequeña
fraccion de la tabla... creo que no es mucha diferencia si igual le
añades las otras 20 columnas porque igual va a hacer un scan de toda
la tabla...
es una consulta que vas a usar frecuentemente? si lo es, seguramente
tu diseño no sea el mas apropiado...
--
Atentamente,
Jaime Casanova
(DBA: DataBase Aniquilator ;)
From | Date | Subject | |
---|---|---|---|
Next Message | Gregorio Diaz | 2005-10-11 20:59:29 | Re: Consulta en SQL |
Previous Message | Jaime Casanova | 2005-10-11 20:14:20 | Re: group by |