Как SQL Server хранит составной первичный ключ? - PullRequest
5 голосов
/ 02 августа 2010

Пределом моего понимания того, как база данных хранит первичный ключ, является btree на основе кластеризованного ключа, где каждый узел хранит остальные столбцы.

Я не обновлял это понимание со времен университета в прошлом веке и хотел бы знать, как SQL Server хранит составной первичный ключ по сравнению с одним первичным ключом.

Может ли кто-нибудь помочь мне указать некоторые детали по этому вопросу?

1 Ответ

4 голосов
/ 02 августа 2010

Составной ключ - это то же самое, что и обычный ключ с одним столбцом, но он длиннее и состоит из нескольких значений. Предположим, у вас есть B-Tree в одном столбце, скажем, A. Листы без листа содержат слоты со значениями столбца A и указатели на листовые страницы. Листовые страницы содержат слоты со значениями столбца A (ключ), за которыми следуют все остальные столбцы строки. Составной ключ точно такой же, но значения в слотах будут составными значениями в порядке их объявления в ключе.

Великолепное описание внутренних элементов страницы данных SQL Server можно найти по адресу Анатомия страницы . Кроме того, глава 6 из старой книги Келана Делани по SQL 7.0 доступна онлайн на Technet: Таблицы . Это по-прежнему отличный ресурс, его основы по-прежнему применимы к SQL 2008 R2 (изменения, которые в основном связаны с максимальными типами и настройками сжатия, но большая часть информации остается в силе).

...