Re: Clave Primaria

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

In response to

  • Clave Primaria at 2005-12-22 14:58:20 from =?ISO-8859-1?Q?Juan_Garc=E9s_Bustam?=ante

Responses

Browse pgsql-es-ayuda by date

  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