Clave primaria Númerica o Caracter?

27/09/2005 - 17:42 por Pedro Valle | Informe spam
Tengan mis cordiales saludos:

Conversando con el equipo de desarrollo donde trabajo y con otros colegas,
salto a conversación los pro y contras de implementar la clave primaria de
una tabla en SQL Server como tipo númerico o caracter; algunos decian que
una clave primaria de tipo númerico era mas rapida que la de caracter,
mientras que otros decian que la de caracter era mas rapida que te permitia
concatenar, etc Despues de mucho conversar salto la siguiente pregunta:

Que es lo que dice SQL Server al respecto, que es lo que aconseja. Buscamos
en la documentación y no hemos encontrado gran cosa al respecto, por lo que
extendemos a ustedes dicha interrogante, han leido sobre esto, como SQL
Server trabaja mejor las claves primarias?, creo que es una interesante
pregunta, los que conocen al respecto o tienen mayor información seria bueno
que opinaran al respecto y por favor seria estupendo que indicaran donde han
leido o existe documentación al respecto, sin la documentación respectiva
solo estariamos divagando y teniendo opiniones un tanto incorrectas.

atte.
Pedro Valle.
Ing. de Sistemas.

Preguntas similare

Leer las respuestas

#1 Maxi
27/09/2005 - 17:46 | Informe spam
Hola Pedro, aca no es muy util lo que diga SQL ya que el concepto este de
claves es mas amplio y aplica a los gestores de bdd. Si hablamos puramente
de performance, las claves numericas (por ej un INT o un BIGINT) son mucho
mas eficientes que las char. Es mas, hay grandes sistemas que usan una clave
fantasma (el usuario no la ve) para realmente vincular las tablas, esto en
grandes volumenes de datos es importante, recorda que tambien tendras un
gran ahorro en indices (tamaño) si usas tipo numerico


Salu2
Maxi


"Pedro Valle" escribió en el mensaje
news:%
Tengan mis cordiales saludos:

Conversando con el equipo de desarrollo donde trabajo y con otros colegas,
salto a conversación los pro y contras de implementar la clave primaria de
una tabla en SQL Server como tipo númerico o caracter; algunos decian que
una clave primaria de tipo númerico era mas rapida que la de caracter,
mientras que otros decian que la de caracter era mas rapida que te
permitia concatenar, etc Despues de mucho conversar salto la siguiente
pregunta:

Que es lo que dice SQL Server al respecto, que es lo que aconseja.
Buscamos en la documentación y no hemos encontrado gran cosa al respecto,
por lo que extendemos a ustedes dicha interrogante, han leido sobre esto,
como SQL Server trabaja mejor las claves primarias?, creo que es una
interesante pregunta, los que conocen al respecto o tienen mayor
información seria bueno que opinaran al respecto y por favor seria
estupendo que indicaran donde han leido o existe documentación al
respecto, sin la documentación respectiva solo estariamos divagando y
teniendo opiniones un tanto incorrectas.

atte.
Pedro Valle.
Ing. de Sistemas.

Respuesta Responder a este mensaje
#2 Harold Crow
27/09/2005 - 18:18 | Informe spam
como menciono Maxi, es irrelevante y no encontraras nada en SQL al respecto,
porque?? porque este es un tema mas de Diseño y no de una BD especifica.
Segun la Teoria Cliente servidor, el usuario deberia lo menos posible
conocer los codigos o claves de los datos que maneja, es decir, mientras
menos el tenga que memorizar codigos y utilizarlos, es mejor. Por eso usas
Combos, Listas, etc para busquedas y ubicacion de informacion sin necesidad
de que el usuario conozca la clave, por lo tanto, es mejor utilizar en la
mayoria de los casos, una clave numerica autoincrementable, ya que muchas
veces ni a nosotros como diseñadores y desarrolladores nos interesa este
numero, bueno, es lo que yo lei en la teoria de Cliente - Servidor, asi que
esperto y te sirva mi opinion.


"Pedro Valle" escribió en el mensaje
news:%
Tengan mis cordiales saludos:

Conversando con el equipo de desarrollo donde trabajo y con otros colegas,
salto a conversación los pro y contras de implementar la clave primaria de
una tabla en SQL Server como tipo númerico o caracter; algunos decian que
una clave primaria de tipo númerico era mas rapida que la de caracter,
mientras que otros decian que la de caracter era mas rapida que te
permitia concatenar, etc Despues de mucho conversar salto la siguiente
pregunta:

Que es lo que dice SQL Server al respecto, que es lo que aconseja.
Buscamos en la documentación y no hemos encontrado gran cosa al respecto,
por lo que extendemos a ustedes dicha interrogante, han leido sobre esto,
como SQL Server trabaja mejor las claves primarias?, creo que es una
interesante pregunta, los que conocen al respecto o tienen mayor
información seria bueno que opinaran al respecto y por favor seria
estupendo que indicaran donde han leido o existe documentación al
respecto, sin la documentación respectiva solo estariamos divagando y
teniendo opiniones un tanto incorrectas.

atte.
Pedro Valle.
Ing. de Sistemas.

Respuesta Responder a este mensaje
#3 Pedro Valle
27/09/2005 - 18:27 | Informe spam
Saludos cordiales.

Es cierto lo que dices, sin embargo como tu mismo lo dices esto va mas alla
del concepto de clave primaria o incluso no tiene nada que ver con la
unicidad e identificación de cada registro o con Integridad relacional, sin
embargo estoy seguro que conocer mas del gestor de base de datos seria una
manera de conocer mas acerca del mismo, como es que el gestor administra y
maneja esta clave, eso seria muy interesante, o es que en ambos casos es lo
mismo?, no discuto el hecho de espacio puesto de hecho los tipos númericos
ocupan menos espacio, no discuto el hecho de indices mas pequeños, también
es correcto, también el tener caracter permite ciertas facilidades que un
númerico no las das, como tener busquedas concatenando campos y crear claves
concatenando campos, pero finalmente ¿cual de los datos nos devuelven mas
rapido los datos? o es que en ambos es lo mismo?, eso es lo que se tiene en
interrogante, eso es lo que se busca en la documentación y que no dice nada
al respecto, que hace el SQL Server al respecto. Talvez alguien que tenga
una base da datos con millones de registros pueda tener mayor información al
respecto al realizar una consulta. Ya que si SQL Server no dice nada al
respecto o no aconseja nada significa que es lo mismo?

atte.
Pedro Valle.



"Maxi" escribió en el mensaje
news:
Hola Pedro, aca no es muy util lo que diga SQL ya que el concepto este de
claves es mas amplio y aplica a los gestores de bdd. Si hablamos puramente
de performance, las claves numericas (por ej un INT o un BIGINT) son mucho
mas eficientes que las char. Es mas, hay grandes sistemas que usan una
clave fantasma (el usuario no la ve) para realmente vincular las tablas,
esto en grandes volumenes de datos es importante, recorda que tambien
tendras un gran ahorro en indices (tamaño) si usas tipo numerico


Salu2
Maxi


"Pedro Valle" escribió en el mensaje
news:%
Tengan mis cordiales saludos:

Conversando con el equipo de desarrollo donde trabajo y con otros
colegas, salto a conversación los pro y contras de implementar la clave
primaria de una tabla en SQL Server como tipo númerico o caracter;
algunos decian que una clave primaria de tipo númerico era mas rapida que
la de caracter, mientras que otros decian que la de caracter era mas
rapida que te permitia concatenar, etc Despues de mucho conversar salto
la siguiente pregunta:

Que es lo que dice SQL Server al respecto, que es lo que aconseja.
Buscamos en la documentación y no hemos encontrado gran cosa al respecto,
por lo que extendemos a ustedes dicha interrogante, han leido sobre esto,
como SQL Server trabaja mejor las claves primarias?, creo que es una
interesante pregunta, los que conocen al respecto o tienen mayor
información seria bueno que opinaran al respecto y por favor seria
estupendo que indicaran donde han leido o existe documentación al
respecto, sin la documentación respectiva solo estariamos divagando y
teniendo opiniones un tanto incorrectas.

atte.
Pedro Valle.
Ing. de Sistemas.





Respuesta Responder a este mensaje
#4 Lautaurus
28/09/2005 - 02:20 | Informe spam
Pedro,

Básicamente el motor de bbdd accede a los datos físicos mediante bloques
de 8Kb (páginas). Esto es tanto para tablas como para índices. El tener
índices pequeños permite que una página de datos del índice albergue
muchos más registros (una clave de 2 bytes permite guardar 10 veces más
registros en una página que una clave de 20 bytes). Esto reduce el
número de operaciones de E/S (costosas) en las búsquedas, ordenamientos,
joins,etc

Si quieres profundizar más en estos conceptos te remomiendo el libro
"Inside SQL" (SQL a fondo), escrito por uno de los creadores de SQL Server.


Pedro Valle escribió:
Saludos cordiales.

Es cierto lo que dices, sin embargo como tu mismo lo dices esto va mas alla
del concepto de clave primaria o incluso no tiene nada que ver con la
unicidad e identificación de cada registro o con Integridad relacional, sin
embargo estoy seguro que conocer mas del gestor de base de datos seria una
manera de conocer mas acerca del mismo, como es que el gestor administra y
maneja esta clave, eso seria muy interesante, o es que en ambos casos es lo
mismo?, no discuto el hecho de espacio puesto de hecho los tipos númericos
ocupan menos espacio, no discuto el hecho de indices mas pequeños, también
es correcto, también el tener caracter permite ciertas facilidades que un
númerico no las das, como tener busquedas concatenando campos y crear claves
concatenando campos, pero finalmente ¿cual de los datos nos devuelven mas
rapido los datos? o es que en ambos es lo mismo?, eso es lo que se tiene en
interrogante, eso es lo que se busca en la documentación y que no dice nada
al respecto, que hace el SQL Server al respecto. Talvez alguien que tenga
una base da datos con millones de registros pueda tener mayor información al
respecto al realizar una consulta. Ya que si SQL Server no dice nada al
respecto o no aconseja nada significa que es lo mismo?

atte.
Pedro Valle.



"Maxi" escribió en el mensaje
news:

Hola Pedro, aca no es muy util lo que diga SQL ya que el concepto este de
claves es mas amplio y aplica a los gestores de bdd. Si hablamos puramente
de performance, las claves numericas (por ej un INT o un BIGINT) son mucho
mas eficientes que las char. Es mas, hay grandes sistemas que usan una
clave fantasma (el usuario no la ve) para realmente vincular las tablas,
esto en grandes volumenes de datos es importante, recorda que tambien
tendras un gran ahorro en indices (tamaño) si usas tipo numerico


Salu2
Maxi


"Pedro Valle" escribió en el mensaje
news:%

Tengan mis cordiales saludos:

Conversando con el equipo de desarrollo donde trabajo y con otros
colegas, salto a conversación los pro y contras de implementar la clave
primaria de una tabla en SQL Server como tipo númerico o caracter;
algunos decian que una clave primaria de tipo númerico era mas rapida que
la de caracter, mientras que otros decian que la de caracter era mas
rapida que te permitia concatenar, etc Despues de mucho conversar salto
la siguiente pregunta:

Que es lo que dice SQL Server al respecto, que es lo que aconseja.
Buscamos en la documentación y no hemos encontrado gran cosa al respecto,
por lo que extendemos a ustedes dicha interrogante, han leido sobre esto,
como SQL Server trabaja mejor las claves primarias?, creo que es una
interesante pregunta, los que conocen al respecto o tienen mayor
información seria bueno que opinaran al respecto y por favor seria
estupendo que indicaran donde han leido o existe documentación al
respecto, sin la documentación respectiva solo estariamos divagando y
teniendo opiniones un tanto incorrectas.

atte.
Pedro Valle.
Ing. de Sistemas.









Respuesta Responder a este mensaje
#5 Maxi
28/09/2005 - 02:56 | Informe spam
Pedro, ya te han explicado como funciona la cosa!! yo solo quiero agregar
que tengo tablas de mas de 20M de registros y no uso tipo entero y sin
problemas!! todo depende del modelo y de cada escenario, no se puede aplicar
una formula para todo y siempre asi!! tambien he trabajado en sistemas donde
poner una PK de INT fue muy bueno y se redujo considerablemente el espacio
en disco


Culminis SQL-Server Speakers (http://latam.culminis.com)

Maxi - Buenos Aires - Argentina
Msn_messager:
mail: Maxi.da[arroba]gmail.com

"Pedro Valle" escribió en el mensaje
news:
Saludos cordiales.

Es cierto lo que dices, sin embargo como tu mismo lo dices esto va mas
alla del concepto de clave primaria o incluso no tiene nada que ver con la
unicidad e identificación de cada registro o con Integridad relacional,
sin embargo estoy seguro que conocer mas del gestor de base de datos seria
una manera de conocer mas acerca del mismo, como es que el gestor
administra y maneja esta clave, eso seria muy interesante, o es que en
ambos casos es lo mismo?, no discuto el hecho de espacio puesto de hecho
los tipos númericos ocupan menos espacio, no discuto el hecho de indices
mas pequeños, también es correcto, también el tener caracter permite
ciertas facilidades que un númerico no las das, como tener busquedas
concatenando campos y crear claves concatenando campos, pero finalmente
¿cual de los datos nos devuelven mas rapido los datos? o es que en ambos
es lo mismo?, eso es lo que se tiene en interrogante, eso es lo que se
busca en la documentación y que no dice nada al respecto, que hace el SQL
Server al respecto. Talvez alguien que tenga una base da datos con
millones de registros pueda tener mayor información al respecto al
realizar una consulta. Ya que si SQL Server no dice nada al respecto o no
aconseja nada significa que es lo mismo?

atte.
Pedro Valle.



"Maxi" escribió en el mensaje
news:
Hola Pedro, aca no es muy util lo que diga SQL ya que el concepto este de
claves es mas amplio y aplica a los gestores de bdd. Si hablamos
puramente de performance, las claves numericas (por ej un INT o un
BIGINT) son mucho mas eficientes que las char. Es mas, hay grandes
sistemas que usan una clave fantasma (el usuario no la ve) para realmente
vincular las tablas, esto en grandes volumenes de datos es importante,
recorda que tambien tendras un gran ahorro en indices (tamaño) si usas
tipo numerico


Salu2
Maxi


"Pedro Valle" escribió en el mensaje
news:%
Tengan mis cordiales saludos:

Conversando con el equipo de desarrollo donde trabajo y con otros
colegas, salto a conversación los pro y contras de implementar la clave
primaria de una tabla en SQL Server como tipo númerico o caracter;
algunos decian que una clave primaria de tipo númerico era mas rapida
que la de caracter, mientras que otros decian que la de caracter era mas
rapida que te permitia concatenar, etc Despues de mucho conversar salto
la siguiente pregunta:

Que es lo que dice SQL Server al respecto, que es lo que aconseja.
Buscamos en la documentación y no hemos encontrado gran cosa al
respecto, por lo que extendemos a ustedes dicha interrogante, han leido
sobre esto, como SQL Server trabaja mejor las claves primarias?, creo
que es una interesante pregunta, los que conocen al respecto o tienen
mayor información seria bueno que opinaran al respecto y por favor seria
estupendo que indicaran donde han leido o existe documentación al
respecto, sin la documentación respectiva solo estariamos divagando y
teniendo opiniones un tanto incorrectas.

atte.
Pedro Valle.
Ing. de Sistemas.









Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida