Tablas e Indices Primaros

17/03/2006 - 00:18 por Diego M R®mero | Informe spam
Hola

a ver si me pueden dar algunas orientaciones, de acuedo a su experiencia:

Que es mejor: Utilizar un índice primario compuesto de varias columnas o
crear una columna para el ídice primario,
me explico:
En una tabla de facturas, tengo 3 campos, que no se pueden repetir:
TipoDocumento VARCHAR(3),NumeroDoc INT y CodCia CHAR(2); a estos campos le
cree un indice PRIMARYKEY.

¿Se justifica crear un campo, por ejemplo NumeroFactura VARCHAR(16) para el
indice primario, donde se llene con
el dato TipoDocumento+NumeroDoc+Codcia ?



Agradezco su colaboración.


Diego

Preguntas similare

Leer las respuestas

#1 Maxi [MVP]
17/03/2006 - 00:40 | Informe spam
Hola, no hay una receta para todos los casos que te podamos recomendar, cada
caso debera ser estudiado especialmente y ver que es mejor


Salu2
-
[MVP] SQL Server
Orador para Culminis Latam
www.sqlgurus.org

MSN:

"Diego M R®mero" escribió en el mensaje
news:eJYlD$
Hola

a ver si me pueden dar algunas orientaciones, de acuedo a su experiencia:

Que es mejor: Utilizar un índice primario compuesto de varias columnas o
crear una columna para el ídice primario,
me explico:
En una tabla de facturas, tengo 3 campos, que no se pueden repetir:
TipoDocumento VARCHAR(3),NumeroDoc INT y CodCia CHAR(2); a estos campos le
cree un indice PRIMARYKEY.

¿Se justifica crear un campo, por ejemplo NumeroFactura VARCHAR(16) para
el
indice primario, donde se llene con
el dato TipoDocumento+NumeroDoc+Codcia ?



Agradezco su colaboración.


Diego


Respuesta Responder a este mensaje
#2 Alejandro Mesa
17/03/2006 - 00:46 | Informe spam
Diego,

Eso no se justifica.

1 - varchar(16) ocupa 7 bytes mas que los que usan esas columnas
2 - Tarde o temprano te veras manipulando esa columna para filtrar por
alguna parte de ella

...
where right(NumeroFactura, 2) = 'AM'

Esto hara que sql server no haga uso adecuado de los indices en carso de
tener alguno por esa columna.

3- Si por casualidad la clave primaria actualizada, entonces tambien debes
cambiar esta columna

Lo que algunas / muchas veces se usa es usar una columna identity (por
ejemplo) para que haga el papel de clave primaria y se crea una restriccion
"unique" para el conjunto de columnas que verdaderamente conforman la clave
primaria.

Te recomiendo las este magnifico articulo escrito por Carlos Sacristán y
saques tus propias conclusiones. Por cierto, en ese site
(http://www.helpdna.net) encontraras buenos articulos sobre SQL. Gracias a
nuestro amigo Salvador Ramos por el buen trabajo hecho (deja ver si por esta
alcahueteria Salvador me ayuda con mi segundo articulo sobre "Estadísticas de
distribución en SQL Server 2000").

¿ Claves naturales o artificiales ?.
http://www.helpdna.net/colab01.htm


AMB

"Diego M R®mero" wrote:

Hola

a ver si me pueden dar algunas orientaciones, de acuedo a su experiencia:

Que es mejor: Utilizar un índice primario compuesto de varias columnas o
crear una columna para el ídice primario,
me explico:
En una tabla de facturas, tengo 3 campos, que no se pueden repetir:
TipoDocumento VARCHAR(3),NumeroDoc INT y CodCia CHAR(2); a estos campos le
cree un indice PRIMARYKEY.

¿Se justifica crear un campo, por ejemplo NumeroFactura VARCHAR(16) para el
indice primario, donde se llene con
el dato TipoDocumento+NumeroDoc+Codcia ?



Agradezco su colaboración.


Diego



Respuesta Responder a este mensaje
#3 Diego M R®mero
17/03/2006 - 15:05 | Informe spam
Gracias por su aporte, tendre que leer mas sobre indices



"Maxi [MVP]" escribió en el mensaje
news:
Hola, no hay una receta para todos los casos que te podamos recomendar,


cada
caso debera ser estudiado especialmente y ver que es mejor


Salu2
-
[MVP] SQL Server
Orador para Culminis Latam
www.sqlgurus.org

MSN:

"Diego M R®mero" escribió en el mensaje
news:eJYlD$
> Hola
>
> a ver si me pueden dar algunas orientaciones, de acuedo a su


experiencia:
>
> Que es mejor: Utilizar un índice primario compuesto de varias columnas o
> crear una columna para el ídice primario,
> me explico:
> En una tabla de facturas, tengo 3 campos, que no se pueden repetir:
> TipoDocumento VARCHAR(3),NumeroDoc INT y CodCia CHAR(2); a estos campos


le
> cree un indice PRIMARYKEY.
>
> ¿Se justifica crear un campo, por ejemplo NumeroFactura VARCHAR(16) para
> el
> indice primario, donde se llene con
> el dato TipoDocumento+NumeroDoc+Codcia ?
>
>
>
> Agradezco su colaboración.
>
>
> Diego
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida