2010-08-02 92 views
5

我理解數據庫如何存儲主鍵的限制是基於聚集鍵的b樹,每個節點存儲其餘列。SQL Server如何存儲複合主鍵?

自從上個世紀的大學以來,我還沒有更新過這種理解,並且很想知道SQL Server如何存儲與單個主鍵相比的複合主鍵。

任何人都可以幫我指出一些細節嗎?

+2

我現在沒有時間給出正確的答案,但只是提到實際上有3種不同的可能性在這裏考慮(1)PK是聚集索引(2)PK是非聚集索引堆(3)PK是具有另一個聚簇索引的表上的非聚簇索引。 – 2010-08-02 00:38:48

+0

所以聚集索引是存儲,而不是PK。我想我沒有把這些物品看作同義詞了。 – Nat 2010-08-02 03:47:52

回答

4

組合鍵與普通單列鍵完全相同,但較長且由多個值組成。考慮你在一列上有一棵B樹,比如說A.非葉頁面包含A列值的插槽和指向葉頁面的指針。葉頁包含帶A列值(鍵)的槽,後面跟着該行的所有其他列。組合關鍵字完全相同,但槽中的值將是合成值,按照它們在關鍵字中聲明的順序排列。

Anatomy of a Page的SQL Server數據頁的內部有很好的描述。此外,Kelan Delaney的舊版SQL 7.0書的第6章可在Technet上在線獲得:Tables。仍然是一個很好的資源,基礎仍然適用於SQL 2008 R2(更改的內容大多數都是最大類型和壓縮設置,但大部分信息仍然有效)。