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

Re: El like no funciona con indices, a diferencia de Oracle

From: Alejandro Gasca <agasca(at)yahoo(dot)com>
To: ernesto contreras <eeljuri(at)gmail(dot)com>, Lista PostgreSql <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: El like no funciona con indices, a diferencia de Oracle
Date: 2006-08-23 14:30:37
Message-ID: 20060823143037.83541.qmail@web34304.mail.mud.yahoo.com (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
 --- ernesto contreras <eeljuri(at)gmail(dot)com> escribió:

> Amigos, tengo una simple tabla con datos de "clientes", la consulta
> que
> mayormente se efectúa es por nombre, apellido o una combinación de
> ambos,.
> Se crearon tres índices:
> 
> uno único por un campo de "identificación "
> uno por "apellido"
> otro por "nombre y apellido"
> 
> la tabla tiene 3.500.000 registros, pero se pensaba que el
> optimizador se
> comportaba similar al de "oracle" cuando se utiliza el operador
> "like", es
> decir,
> 
> nombre like ('monte%'), en este caso lo usa (oracle) ya que el
> comodin no
> está al principio, claro que no lo usa completo, pero ayuda.
> 
> La cuestión es que estamos sustituyendo una base de datos oracle y
> debe
> quedar igual o mejor.
> 
> Datos de la estructura, índices y los Select's:
> 
> Column   |          Type          | Modifiers
> -----------+------------------------+-----------
> nomter    | character varying(240) |
> apeter     | character varying(50)  |
> numid     | numeric(14,0)          |
> telef        | character varying(12)  |
> email1    | character varying(100) |
> email2    | character varying(100) |
> codciudad | character varying(3)   |
> 
> Indexes:
>    "tercero_pkey" UNIQUE, btree (numid, dvid, tipoid)
>    "id_tercero3" btree (nomter, apeter)
>    "id_tercero4" btree (apeter)
> 
> 
> Búsqueda por "apellido"
> 
> explain select nomter, numid from tercero
>  where apeter like ('JUAN%');
>                          QUERY PLAN
> ------------------------------------------------------------
>  Seq Scan on tercero  (cost=0.00..48388.32 rows=1 width=26)
>    Filter: ((apeter)::text ~~ 'JUAN%'::text)
> (2 rows)
> 
> 
> Búsqueda por "nombre"
> 
> explain select nomter, numid from tercero
> where nomter like ('%CASTRO%') and apeter like ('JUAN%');
>                                        QUERY
> PLAN
>
----------------------------------------------------------------------------------------
>  Seq Scan on tercero  (cost=0.00..51686.39 rows=1 width=26)
>    Filter: (((nomter)::text ~~ '%CASTRO%'::text) AND ((apeter)::text
> ~~
> 'JUAN%'::text))
> (2 rows)
> 
> 
> Agredecemos sus comentarios y/o sugerencias.
> 
En la faq:
http://www.postgresql.org/docs/faqs.FAQ.html

seria conveniente que revisaras la parte indices:

http://www.postgresql.org/docs/faqs.FAQ.html#item4.6

bye.

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

In response to

pgsql-es-ayuda by date

Next:From: AndreaDate: 2006-08-23 15:21:18
Subject: DUDA EXPLAIN - base datos 240GB
Previous:From: Alvaro HerreraDate: 2006-08-23 14:27:51
Subject: Re: explain - base de datos 240 GB

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