Re: Uso de los Indices

From: Miguel Rodríguez Penabad <penabad(at)gmail(dot)com>
To: "Gabriel Hermes Colina Zambra" <hermeszambra(at)yahoo(dot)com>
Cc: Erich Javier Briceño Fernadez <erich(dot)briceno(at)cne(dot)gob(dot)ve>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Uso de los Indices
Date: 2007-07-19 21:51:28
Message-ID: 95335e4e0707191451x8c66dcg3f639dd782db4e99@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El 19/07/07, Gabriel Hermes Colina Zambra <hermeszambra(at)yahoo(dot)com> escribió:
> --------------------------------------------------------------
> > > "DANIEL COLMENARES" 1
> > > "MARIA CONTRERAS" 2
> > > "CARLOS ENRIQUE CARDENAS" 3
> >
> > Dos cositas:
> > 1. Esto no tiene nada que ver con index en el
> > sentido de "índice" en
> > una BD, así que confunde
> Perdon perdon, se puede hacer un indice, lo que la BD
> resuelve cual usa cuando haces el select, no lo
> decidis vos, como por ejemplo usuas un lenguaje para
> archivos mdb, dbf, etc.

De acuerdo con esto.

> Tu puedes hacer select * from test order by campo y si
> creaste un indice para campo en la tabla test, seguro
> lo va usar, asi que creo que aqui no esta clara la
> respuesta.

Ya, un select * from test puede usar índices si los hay, lógico.
Pero la tabla test tiene un campo, y el resultado del select tiene 2,
y un índice no hace eso. Imagino, por las otras respuestas, que quiere
añadir un "campo índice" a cada fila (1 México, 2 Venezuela, o lo que sea.

> > 2. ¿Puedo preguntar para que necesitas el "número"
> > de cada fila recuperada?
> > Directamente no se puede hacer
> > (algo estilo Oracle "select campo, rownum from test"
> > no está
> > disponible en Postgres).
> > Aunque habría forma (por ejemplo una función que
> > retorne una tabla con
> > la estructura
> > que tu quieres) no le veo demasiado sentido.
>
> Mas o menos cierto, si no fijate en esto select ctid,*
> from test, quiza no te devuelve un entero, pero si el
> orden de los registros, asi que sustituye bien lo de
> oracle, decir creo que es mas sano que decir no esta
> disponible, puesto que de PostgreSQL no sabemos todo.

Por supuesto que no lo sabemos todo, y no estaba comparando postgres con oracle,
simplemente estaba diciendo que este tiene una pseudocolumna que
devuelve el "número
de fila". Sé de los campos oid (si se crea con ellos) y me enteré por
tu mensaje del ctid, pero no son números y están ligados a la fila
física, no al orden en que se devuelve, por lo
que imaginaba que no servirían.

> Te explico un sentido posible, que esto puede tener,
> en mi pais hay un pie de imprenta de los documentos y
> la numeracion en los sistemas de computos generan otro
> numero y serie con determinadas caracteristicas, en el
> mismo formulario se imprimen varios tipos de
> documentos, el ctid en este caso sirve para saber en
> que secuencia se fue registrando cada impresion,
> numeros que despues se emparentan con los de la
> imprenta para la declaracion, particularmente yo les
> doy un autonumerico, pero si no lo tuviera el ctid me
> podria ayudar.
>
> A veces aunque no veamos el sentido, no quiere decir
> que no lo tenga para otro companiero de la lista.

Como él ponía el ejemplo con números, y hay gente que lo hace para hacer una
consulta de N filas y postgres lo permitiría sin esa pseudocolumna simplemente
poniendo LIMIT N al select, por eso preguntaba.

De todas formas usar el ctid que tu dices no estoy seguro de que sea
una buena idea.
Yo me quedaría con la opción que tu dices del serial, porque lo que sí
he leído en la
documentación oficial es que usar el oid de una fila como clave
primaria está totalmente
desaconsejado.

> A mi me preocupa poco si tiene sentido o no, si se
> puede hacer y se como se hace respondo y si creo que
> algo no es posible digo creo. Por que en este caso se
> compara con Oracle dicendo que algo no se puede hace y
> eso es falso.

Lo de preguntar por qué, y la comparación con Oracle creo que
las he "justificado" (si es que era necesario) para saber si podía
dar una opción mejor, y lo de obtener NUMEROS como el ponía,
no el ctid, es cierto: no se puede. Al menos eso dice la doc oficial.

Repito: NO estoy tratando de comparar gestores.
Estoy tratando de aprender y ayudar a aprender.

Saludos
Miguel

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Rodolfo Villanueva 2007-07-19 21:59:05 ¿Mision Imposible?
Previous Message Arturo Munive 2007-07-19 20:48:05 Re: Uso de los Indices