Re: problema indice

From: Alejandro Gasca <agasca(at)yahoo(dot)com>
To: Alejandro Gasca <agasca(at)yahoo(dot)com>, ayuda postgres <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: problema indice
Date: 2006-06-07 05:09:33
Message-ID: 20060607050933.69469.qmail@web34309.mail.mud.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


--- Alejandro Gasca <agasca(at)yahoo(dot)com> escribió:

> Saludos.
>
> Tengo un problema con un indice de una tabla. Tenía la base con un
> locale, pero la necesitaba con otro locale. Cree la nueva con:
> initdb --locale=es_MX.UTF-8 -E UTF8 -D /rutadb
>
> Y pase los datos de una a otra con el pg_dumpall...
>
> Pero, en una de las tablas no hace la búsqueda por índices, en la
> misma
> tabla, pero en diferentes bases, hace cosas distintas.
>
> En la base 1:
> explain select * from ponpon where nombre like 'n%';
> QUERY PLAN
>
>
-----------------------------------------------------------------------------
> Index Scan using ponpon_nombre on ponpon (cost=0.00..3.01 rows=1
> width=23)
> Index Cond: ((nombre >= 'n'::text) AND (nombre < 'o'::text))
> Filter: (nombre ~~ 'n%'::text)
> (3 rows)
>
> En la base 2:
>
> explain select * from ponpon where nombre like 'n%';
> QUERY PLAN
> ------------------------------------------------------------
> Seq Scan on ponpon (cost=0.00..350525.40 rows=1 width=23)
> Filter: (nombre ~~ 'n%'::text)
> (2 rows)
>
> Ahora, si en la base2 hago:
> explain select * from ponpon where ((nombre >= 'n'::text) AND (nombre
> <
> 'o'::text)); QUERY PLAN
>
-----------------------------------------------------------------------------
> Index Scan using ponpon_nombre on ponpon (cost=0.00..3.02 rows=1
> width=23)
> Index Cond: ((nombre >= 'n'::text) AND (nombre < 'o'::text))
> (2 rows)
>
> Si hace bien la búsqueda, por lo que el problema es cuando "pasa" el
> like 'n' a ((nombre >= 'n'::text) AND (nombre < 'o'::text))...
> creo...
>
> Gracias.
>
> __________________________________________________
> Correo Yahoo!
> Espacio para todos tus mensajes, antivirus y antispam ¡gratis!
> Regístrate ya - http://correo.espanol.yahoo.com/
>
> ---------------------------(fin del
> mensaje)---------------------------
> TIP 4: No hagas 'kill -9' a postmaster
>

Ups... perdón, venía en la sección 11.8 del manual :) había que ponerle
el text_pattern_ops:
create index ponpon_nombre_ops on ponpon (nombre text_pattern_ops)

y ahora si:

# explain select * from ponpon where nombre like 'r%';
QUERY PLAN
---------------------------------------------------------------------------------
Index Scan using ponpon_nombre_ops on ponpon (cost=0.00..6.01 rows=1
width=23)
Index Cond: ((nombre ~>=~ 'r'::text) AND (nombre ~<~ 's'::text))
Filter: (nombre ~~ 'r%'::text)
(3 rows)

Alejandro.

__________________________________________________
Correo Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis!
Regístrate ya - http://correo.espanol.yahoo.com/

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jaime Casanova 2006-06-07 06:05:08 Re: log de postgres 8.1.3
Previous Message Jaime Casanova 2006-06-07 03:53:59 Re: utf8_to_ascii