Должен ли столбец первичного ключа последовательного Guid быть кластеризованным индексом? - PullRequest
3 голосов
/ 18 ноября 2009

Цель использования последовательного guid состоит в том, чтобы вы могли использовать кластерные индексы без высоких уровней фрагментации, которые обычно существовали бы в кластеризованном индексе, если бы это был обычный guid, верно?

Ответы [ 2 ]

7 голосов
/ 18 ноября 2009

Сначала поясним, что первичный ключ и кластеризованный индекс - это две разные и разные вещи, то есть одна не связана с другой (PK могут быть некластерными, кластерные индексы могут быть не PK).

Учитывая вышесказанное, я думаю, вы спрашиваете больше "следует ли использовать последовательный GUID в качестве кластерного индекса". Это загруженный вопрос, но Кимберли Трипп обсудил этот вопрос , вероятно, лучший из всех, кого я видел. Обратите внимание, что статья ссылается на PK, но внутри статьи она ссылается на то, как соображение применяется в основном к выбору кластеризованного индекса по сравнению с PK.

Предполагая, что вы уже решили использовать GUID в качестве ключа кластера (что может быть, а может и не быть), использование последовательного GUID, скорее всего, будет лучшим выбором для непоследовательного GUID, однако есть по крайней мере 1 сценарий, в котором непоследовательный GUID может быть предпочтительным (хотя очень редкий, очень продвинутый сценарий, когда вам придется в основном понимать свою систему и сервер SQL настолько хорошо, что у вас нет сомнений в том, что это следует использовать - имел делать с горячими точками на вашем устройстве хранения и распределять большие объемы записей в разных местах кластера).

2 голосов
/ 18 ноября 2009

Да, вы правы.

...