Я лично использую INT IDENTITY для большинства моих первичных ключей и ключей кластеризации.
Вам необходимо отделить первичный ключ , который является логической конструкцией - он уникально идентифицирует ваши строки, он должен быть уникальным, стабильным и НЕ ПУСТО. GUID также хорошо работает для первичного ключа - поскольку он гарантированно будет уникальным. GUID в качестве первичного ключа является хорошим выбором, если вы используете репликацию SQL Server, поскольку в этом случае вам все равно необходим уникальный идентификатор столбца GUID.
Ключ кластеризации в SQL Server - это физическая конструкция, используемая для физического упорядочения данных, и его намного сложнее понять. Как правило, королева индексации на SQL Server, Кимберли Трипп, также требует, чтобы хороший ключ кластеризации был уникальным, стабильным, как можно более узким и в идеале постоянно увеличивающимся (то есть INT IDENTITY).
Смотрите ее статьи по индексации здесь:
GUID - это действительно плохой выбор для ключа кластеризации, поскольку он широкий, абсолютно случайный и, следовательно, приводит к плохой фрагментации индекса и низкой производительности. Кроме того, строки ключей кластеризации также хранятся в каждой записи каждого некластеризованного (дополнительного) индекса, так что вы действительно хотите сохранить его небольшим - GUID равен 16 байтам, тогда как INT равен 4 байтам, и с несколькими некластеризованными индексами и несколькими миллионами строк это делает ОГРОМНОЕ различие.
В SQL Server ваш первичный ключ по умолчанию является вашим ключом кластеризации, но это не обязательно. Вы можете легко использовать GUID в качестве первичного ключа, не относящегося к кластеру, и INT IDENTITY в качестве ключа кластеризации - для этого достаточно немного осознать его.