уникальный идентификатор с индексом - PullRequest
0 голосов
/ 09 июня 2009

каков будет эффект, если столбец типа данных uniqueidentifier кластеризован / некластеризованный индекс в таблице sql server 2005/2008. Я читал, что это плохо спроектированная таблица, как избежать этой проблемы и какое лучшее решение?

Ответы [ 2 ]

1 голос
/ 09 июня 2009

Если он не кластеризован, это просто означает, что индекс будет широким (16 байт на строку, а не 4 байта на строку с целым числом).

Если он кластеризован, вставки приведут к разбиению страницы в зависимости от того, сколько свободного места (коэффициент заполнения) вы оставите в индексе при его создании / перестройке.

Есть несколько вопросов о том, как SO обсуждает эту тему:

Должен ли я избавиться от кластеризованных индексов в столбцах Guid

Преимущества и недостатки ключей базы данных GUID / UUID

Кластерный первичный ключ в столбце с уникальным идентификатором в SQL Server

Повышение производительности первичного ключа GUID индекса кластера

0 голосов
/ 09 июня 2009

GUID является плохим выбором для кластеризованного индекса в SQL Server, поскольку из-за случайности значений кластеризованный индекс плохо фрагментируется.

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

GUID является отличным выбором с точки зрения программиста - более или менее случайным, почти гарантированно уникальным - но с точки зрения базы данных, использование их в качестве кластерного индекса в SQL Server - очень плохой выбор.

См. Различные статьи Ким Триппа на эту тему - очень увлекательно!

http://www.sqlskills.com/BLOGS/KIMBERLY/post/GUIDs-as-PRIMARY-KEYs-andor-the-clustering-key.aspx

http://sqlskills.com/BLOGS/KIMBERLY/post/The-Clustered-Index-Debate-Continues.aspx

http://www.sqlskills.com/BLOGS/KIMBERLY/post/Ever-increasing-clustering-key-the-Clustered-Index-Debateagain!.aspx

Марк

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...