Re: una duda

From: Alejandro Gasca <agasca(at)yahoo(dot)com>
To: ayuda postgres <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: una duda
Date: 2006-05-29 05:03:16
Message-ID: 20060529050316.49997.qmail@web34309.mail.mud.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

> --- "Guillermo O. Burastero" <linux(dot)gb(at)gmail(dot)com> escribió:
>
> > Sólo se garantiza el orden de la consulta SELECT si se usa la
> > cláusula
> > ORDER BY en la misma.
> >
> > El 26/05/06, Alejandro Gasca<agasca(at)yahoo(dot)com> escribió:
> > > Saludos a todos los listeros y listeras!
> > >
> > > Tengo una duda, referente, creo, a una conversion de datos.
> > >
> > > hago una consulta del tipo:
> > > select * from tabla where campo like 'inicio%'
> > >
> > > (campo es texto o char y esta indexado)
> > > Ahora, supongo que si indexa el campo tiene que hacer un escaneo
> > por
> > > indice, pero no: si el campo es de tipo char(n) o varchar(n) lo
> > hace
> > > escaneado, si por otro lado es text sí hace el escaneo por
> índice.
> > >
> > > Me supongo que esto es porque al hacer el like convierte char a
> > text...
> > > pero no se...
> > > Habrá forma o una funcion para hacer que se busquen los primeros
> > > caracteres de un char? o ya mejor convierto el campo a text?
> > >
> > > De antemano, gracias.
> > >
> > > Alejandro
> > >
> > > __________________________________________________
> > > Correo Yahoo!
> > > Espacio para todos tus mensajes, antivirus y antispam ¡gratis!
> > > Regístrate ya - http://correo.espanol.yahoo.com/
> > >
> > > ---------------------------(fin del
> > mensaje)---------------------------
> > > TIP 1: para suscribirte y desuscribirte, visita
> > http://archives.postgresql.org/pgsql-es-ayuda
> > >
> >
> >
> > --
> > Guillermo O. Burastero
> > Usuario GNU/Linux #84879 - http://counter.li.org/
> > Bahía Blanca, Buenos Aires, Argentina
> > Tel. +54(291)454-6132
> >
>
No, no creo que sea eso... de hecho ya ni se que hice. hice una copia
de la base, e hice unas modificaciones. lo siguiente:

explain
select inegi_localidad, count(*) from micro2005
where inegi_localidad like '24048%' group by inegi_localidad;

da diferente salida según la base.

En la primera da:

QUERY PLAN
-------------------------------------------------------------------
HashAggregate (cost=641.40..641.52 rows=10 width=13)
-> Seq Scan on micro2005 (cost=0.00..641.35 rows=10 width=13)
Filter: (inegi_localidad ~~ '24048%'::text)
(3 rows)

En la segunda:

QUERY PLAN

---------------------------------------------------------------------------------------------------------
HashAggregate (cost=295.59..296.84 rows=100 width=13)
-> Bitmap Heap Scan on micro2005 (cost=2.60..295.09 rows=100
width=13)
Filter: (inegi_localidad ~~ '24048%'::text)
-> Bitmap Index Scan on micro2005_inegi_localidad
(cost=0.00..2.60 rows=100 width=0)
Index Cond: ((inegi_localidad >= '24048'::bpchar) AND
(inegi_localidad < '24049'::bpchar))
(5 rows)

La definicion del campo en la tabla de la primer base es:

inegi_localidad | character(9) | not null

El índice:

"micro2005_principal" PRIMARY KEY, btree (inegi_localidad)

En la segunda base tengo:

inegi_localidad | character(9) | not null
"micro2005_principal" PRIMARY KEY, btree (inegi_localidad)

¿donde esta o donde busco la diferencia?... bueno... espero ser claro
con la exposicion de lo que está pasando...

Gracias por la atención

Alejandro

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

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2006-05-29 05:13:06 Re: una duda
Previous Message Mirko Coz 2006-05-29 04:51:54 Inserción de imágenes en base de datos