Вам действительно нужно разделить две отдельные проблемы:
1) первичный ключ является логической конструкцией - одним из ключевых кандидатов, который уникальным и надежным образом идентифицирует строку в вашей таблице. На самом деле это может быть что угодно - INT, GUID, строка - выберите то, что наиболее подходит для вашего сценария.
2) ключ кластеризации (столбец или столбцы, которые определяют «кластеризованный индекс» в таблице) - это физическая вещь, связанная с хранилищем, и здесь маленький, стабильный, постоянно растущий тип данных - ваш лучший выбор - INT или BIGINT в качестве варианта по умолчанию.
По умолчанию первичный ключ в таблице SQL Server также используется в качестве ключа кластеризации, но это не обязательно должно быть именно так! Лично мне кажется, что со временем огромный прирост производительности происходит, когда я делю предыдущий первичный кластеризованный ключ на основе GUID на два отдельных ключа - первичный (логический) ключ на GUID и ключ кластеризации (упорядочения) на отдельном INT IDENTITY (1). 1) столбец.
Фрагментация индекса снизилась до минимальных уровней, и, таким образом, производительность поиска индекса была повышена - настоятельно рекомендуется!
Марк