Re: Consulta en SQL

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 ;)

In response to

Responses

Browse pgsql-es-ayuda by date

  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