Должен ли столбец первичного ключа Sequential Guid быть кластеризованным индексом?

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

2 ответа

Решение

Да вы правы.

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

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

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

Другие вопросы по тегам