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

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


person Chris Marisic    schedule 18.11.2009    source источник


Ответы (2)


Да вы правы.

person Community    schedule 18.11.2009

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

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

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

person boydc7    schedule 18.11.2009
comment
Спасибо за добавленную информацию, надеюсь, она кому-то пригодится позже. - person Chris Marisic; 18.11.2009