From: | Mario Gonzalez <gonzalemario(at)gmail(dot)com> |
---|---|
To: | Juan Garcés Bustamante <jgarces(at)futuroprofesional(dot)cl> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Clave Primaria |
Date: | 2005-12-22 15:28:39 |
Message-ID: | 2065a6cf0512220728p63103a00o@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
On 22/12/05, Juan Garcés Bustamante <jgarces(at)futuroprofesional(dot)cl> wrote:
> Hola
>
> Me encuentro con un problema al definir la clave primaria de una tabla.
>
> Es una tabla que contiene 9 campos y 3 de éstos conforman la clave primaria.
>
> Ej:
>
> CREATE TABLE documento_venta (
> a integer NOT NULL, ==> Primaria
> b integer NOT NULL, ==> Primaria
> c bigint NOT NULL, ==> Primaria
> d integer,
> e bigint,
> f date NOT NULL,
> g numeric NOT NULL,
> h numeric NOT NULL,
> i numeric NOT NULL,
> );
>
> De esta tabla dependen otras 10 tablas, con lo que la clave (a,b,c) se pasaría
> a las demás tablas. Por otro lado, son tablas que contendrán millones de datos
> y se consultarán frecuentemente.
>
> Mis consultas son las siguientes:
>
> ¿Es conveniente dejar la clave como está o definir un solo campo SERIAL que
> sirva como clave primaria?
>
Todo depende de como hayas hecho tu modelo
> ¿Es significativamente más costoso un JOIN con 3 campos que con uno?
>
> ¿Influyen en algo los tipos de datos que poseen los campos claves?
>
SI, en cuanto a usar indices se recomienda usar numeros enteros, por
ejemplo si en tu consulta incluyes un LIKE... AFAIK en un campo que
contenga caracteres el optimizador ignorara el uso de indices.
> He trabajado muy poco con Postgres y no sé qué opción pueda ser más óptima.
>
> Desde ya gracias a quienes puedan ayudarme.
>
From | Date | Subject | |
---|---|---|---|
Next Message | Jaime Casanova | 2005-12-22 15:34:19 | Re: Clave Primaria |
Previous Message | cristian | 2005-12-22 15:16:51 | Slony - Consulta |