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