RE: Como indexar correctamente

From: "rogoh" <rogoh(at)dscorp(dot)com(dot)mx>
To: "'Alvaro Herrera'" <alvherre(at)dcc(dot)uchile(dot)cl>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: Como indexar correctamente
Date: 2005-01-11 01:28:47
Message-ID: 200501110120.j0B1Kmr25537@linx2.dscorp.com.mx
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Alvaro: Antes que nada gracias por tu ayuda

Ahora que lei tu respuesta, tengo una duda sobre lo que mencionas sobre las
llaves foraneas, en todos los casos que utilizo llaves foranes las ligo de
esta forma:

CREATE TABLE TABLA1(
Idtabla1 serial Primary KEY,
.....
...
);

CREATE TABLE TABLA2(
.....
....
Idtabla1 int4 REFERENCES TABLA1,
....
....
);

La pregunta en este caso, el tipo de dato int4 es igual al Serial o cual
necesito usar en este caso?.

Con referente a lo de los rebotes de correo, acabo de avisar a nuestro
administrador del servidor para que corrija esto, ya que parece que no
encontraba tu correo, perdón por las molestias. Y Gracias.

Roberto

-----Mensaje original-----
De: Alvaro Herrera [mailto:alvherre(at)dcc(dot)uchile(dot)cl]
Enviado el: Lunes, 10 de Enero de 2005 07:01 p.m.
Para: rogoh
CC: pgsql-es-ayuda(at)postgresql(dot)org
Asunto: Re: [pgsql-es-ayuda] Como indexar correctamente

On Mon, Jan 10, 2005 at 06:07:23PM -0600, rogoh wrote:

Hola,

> Ahora la pregunta que tengo y que no he podido solucionar en un sistema
que
> estoy haciendo es la forma correcta de indexar tablas que contegan esa
> cantidad de información y que se relacionen con otras tablas para que las
> consultas sean lo mas rapido posible, esto es algo asi como:
>
> Select t1.*, t2.* …… from tabla1 t1,tabla2 t2, ….. where
t1.campo1=t2.campo1
> and t1.campo2=t3.campo1 and ………

Es dificil dar ayuda a estos problemas en generico. Lo unico que te
puedo decir es que en 7.4 y anteriores las conversiones de tipo son
problematicas c/r al uso de indices. Lo malo es que como hay
conversiones de datos implicitas, muchas veces uno no se da cuenta que
hay una conversion. Para hacerlas visibles el mecanismo mas sencillo es

create view vista_temporal as
Select t1.*, t2.* …… from tabla1 t1,tabla2 t2, ….. where
t1.campo1=t2.campo1
and t1.campo2=t3.campo1 and ………

y luego aplicas
\d vista_temporal

y en la descripcion de la vista vas a observar conversiones de tipos en
los distintos campos donde sea necesario aplicarlas implicitamente. En
7.3 y anteriores el resultado era a menudo sorpresivo e inesperado; es
por esto que en 7.4 se restringio el uso de conversiones implicitas, y
algunas cosas funcionan de manera un poco distinta.

Un comentario obvio es que si tienes llaves foraneas, ambos lados de la
llave deberian tener exactamente el mismo tipo de dato (por ej. int8 <->
int8,
nunca int4 <-> int8)

Para detalles mas especificos, publica la consulta exacta, el explain
analyze y las definiciones de las tablas involucradas; aca aplicamos
correccion de errores. A fuerza de palos eventualmente se entiende el
mecanismo. Es posible que haya algun modelo matematico para describir
todo esto sin tener que hacer ensayo/error, pero yo no lo he visto
escrito.

PS - Uds. nunca solucionaron el problema que les mencione con su MX.
Siguen rebotando la mitad del correo.

--
Alvaro Herrera (<alvherre[(at)]dcc(dot)uchile(dot)cl>)
Y dijo Dios: "Que sea Satanás, para que la gente no me culpe de todo a mí."
"Y que hayan abogados, para que la gente no culpe de todo a Satanás"

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2005-01-11 01:31:10 Re: Como indexar correctamente
Previous Message Alvaro Herrera 2005-01-11 01:01:20 Re: Como indexar correctamente