Tengo varias tablas donde los registros se pueden identificar de forma exclusiva con varios campos comerciales amplios. En el pasado, he usado estos campos como PK, con estos beneficios en mente:
- Sencillez; no hay campos extraños y solo un índice
- La agrupación en clúster permite combinaciones de fusión rápidas y filtros basados en rango
Sin embargo, he escuchado un caso para crear una IDENTITY INT
PK sintética y, en su lugar, aplicar la clave comercial con una UNIQUE
restricción separada . La ventaja es que el PK estrecho genera índices secundarios mucho más pequeños.
Si una tabla no tiene índices distintos al PK, no veo ninguna razón para favorecer el segundo enfoque, aunque en una tabla grande probablemente sea mejor suponer que los índices pueden ser necesarios en el futuro y, por lo tanto, favorecen el PK sintético estrecho . ¿Me estoy perdiendo alguna consideración?
Por cierto, no estoy discutiendo contra el uso de claves sintéticas en almacenes de datos, solo estoy interesado en cuándo usar una PK amplia y única y cuándo usar una PK estrecha más un Reino Unido amplio.