2010-08-02 18 views
5

Il limite della mia comprensione del modo in cui un database memorizza una chiave primaria è un btree basato sulla chiave cluster con ciascun nodo che memorizza il resto delle colonne.In che modo SQL Server memorizza una chiave primaria composita?

Non ho aggiornato questa comprensione dall'università del secolo scorso e mi piacerebbe sapere come SQL Server memorizza una chiave primaria composita rispetto a una singola chiave primaria.

Qualcuno può aiutarmi a indicarmi qualche dettaglio su questo?

+2

Non ho il tempo di dare una risposta corretta ora ma dirò solo che ci sono in realtà 3 diverse possibilità da considerare qui (1) Il PK è l'indice cluster (2) Il PK è un indice non cluster su un heap (3) Il PK è un indice non cluster su una tabella con un altro indice cluster. –

+0

Quindi l'indice cluster è la memoria, non il PK. Immagino che non avessi più pensato a questi oggetti. – Nat

risposta

4

Una chiave composta è esattamente la stessa di una normale chiave singola, ma è più lunga e composta da più valori. Considera di avere un B-Tree su una singola colonna, ad esempio A. Le pagine non foglia contengono slot con valori di una colonna e puntatori a pagine foglia. Le pagine foglia contengono slot con i valori della colonna A (la chiave), seguiti da tutte le altre colonne della riga. Una chiave composta è esattamente la stessa, ma i valori negli slot saranno i valori compositi, nell'ordine in cui sono dichiarati nella chiave.

Esiste un'ottima descrizione degli interni di una pagina di dati di SQL Server allo Anatomy of a Page. Inoltre, il capitolo 6 del vecchio libro SQL 7.0 di Kelan Delaney è disponibile online su Technet: Tables. È ancora una grande risorsa, le basi si applicano ancora a SQL 2008 R2 (le cose che vengono modificate riguardano principalmente i tipi max e le impostazioni di compressione, ma la maggior parte delle informazioni è ancora valida).

Problemi correlati