2010-08-02 26 views
5

El límite de mi comprensión de cómo una base de datos almacena una clave primaria es un btree basado en la clave agrupada, donde cada nodo almacena el resto de las columnas.¿Cómo almacena SQL Server una clave primaria compuesta?

No he actualizado este conocimiento desde la universidad del siglo pasado y me encantaría saber cómo SQL Server almacena una clave primaria compuesta en comparación con una sola clave principal.

¿Alguien puede ayudarme a señalar algunos detalles sobre esto?

+2

No tengo tiempo para dar una respuesta correcta ahora pero mencionaré que en realidad hay 3 posibilidades diferentes para considerar aquí (1) El PK es el índice agrupado (2) El PK es un índice no agrupado en un montón (3) El PK es un índice no agrupado en una tabla con otro índice agrupado. –

+0

Entonces, el índice agrupado es el almacenamiento, no el PK. Supongo que tampoco había pensado en estos artículos. – Nat

Respuesta

4

Una clave compuesta es exactamente la misma que una clave ordinaria de columna única, pero es más larga y está compuesta por valores múltiples. Considere que tiene un B-Tree en una sola columna, digamos A. Las páginas que no son hojas contienen slots con valores de columna A y punteros a páginas de hoja. Las páginas contienen slots con los valores de la columna A (la clave), seguidos de todas las otras columnas de la fila. Una clave compuesta es exactamente la misma, pero los valores en las ranuras serán los valores compuestos, en el orden en que se declaran en la clave.

Hay una gran descripción de las partes internas de una página de datos de SQL Server en Anatomy of a Page. Además, el Capítulo 6 del antiguo libro SQL 7.0 de Kelan Delaney está disponible en línea en Technet: Tables. Sigue siendo un gran recurso, los conceptos básicos aún se aplican a SQL 2008 R2 (las cosas que se cambian son principalmente en torno a los tipos max y la configuración de compresión, pero la mayor parte de la información sigue siendo válida).

Cuestiones relacionadas