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/
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 |