Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Tablas con PK són más rápidas en responder consultas, por qué?

Estas en el tema de Tablas con PK són más rápidas en responder consultas, por qué? en el foro de Bases de Datos General en Foros del Web. Hola. Tengo una tabla con 15 columnas, 2 llaves foráneas. Otra tabla con las mismas columnas, pero con 5 llaves primarias(PK). Ambas tablas con 12 ...
  #1 (permalink)  
Antiguo 21/11/2018, 08:13
Avatar de chicohot20  
Fecha de Ingreso: mayo-2009
Mensajes: 388
Antigüedad: 14 años, 10 meses
Puntos: 43
Tablas con PK són más rápidas en responder consultas, por qué?

Hola.

Tengo una tabla con 15 columnas, 2 llaves foráneas. Otra tabla con las mismas columnas, pero con 5 llaves primarias(PK).

Ambas tablas con 12 millones de registros. Haciendo pruebas con diferentes consultas: Select * from ... where campo1=$1 and campo2=$2 and campo3=$3 and campo4=$4 hay una diferencia en el tiempo de repuesta. La tabla con PK es 5 veces más rápida que las tablas sin PK, y no me explico por qué.

Las consultas no las hago por los índices, sino con otros campos de la tabla.
Gracias de antemano.

Última edición por chicohot20; 21/11/2018 a las 08:22
  #2 (permalink)  
Antiguo 21/11/2018, 13:48
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 7 meses
Puntos: 774
Respuesta: Tablas con PK són más rápidas en responder consultas, por qué?

Sencillo, al momento de crear una llave primaria se crea un indice que se ordena por esa columna, por lo cual al momento de una consulta la tabla con una llave primaria sera mas rapida que una tabla sin ella
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 22/11/2018, 14:18
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Tablas con PK són más rápidas en responder consultas, por qué?

Cita:
(...) Otra tabla con las mismas columnas, pero con 5 llaves primarias(PK).
No existen tablas con 5 PK. En todo caso tienes una tabla con una PK múltiple campo. No es lo mismo

Una PK es una clave única, y en los DBMS se usa como índice físico de las tablas. No puedes ordenar físicamente una biblioteca de más de una forma. Lo que sí puedes tener es un índice temático, por autor, por fecha, editorial, etc. Esos son INDICES, que pueden ser UNIQUE, caso en que sus valores de clave son únicos y actúan a modo de un índice primario alternativo, o son INDEX, que permiten acceder rápidamente a los registros cuando se busca por los campos que se indexan.
Es tan simple como que es más fácil buscar un tema por el índice, y no buscando página a pagina...
¿No te parece?

Incluso, cuando los campos a buscar están incluidos tambien como clave de índice, algunos DBMS directamente ni siquiera miran la tabla, sino que sacan los datos que se buscan desde el propio indice.

Hay muchas razones por las cuales un indice puede convenir, la explciacion es larga, y tiene muchos aspectos técnicos. Pero a los efectos prácticos, es fumdamental tener adecuadamente indexada una tabla.

Pero no te confundas: Un índice también puede tener resultados nocivos si es inadecuado, mal usado, o innecesariamente definido. Y se debe tener en cuenta que indexar por indexar no es buena idea, dado que los indices se deben actualizar y reescribir con cada INSERT/UPDATE/DELETE... así que demasiados índices podrían conspirar contra la performance de las tablas con muchas inserciones/Actualizaciones/borrados.

Todo en su medida adecuada.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: llaves, registros, tablas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:42.