В принципе, технически вы можете сделать любой столбец, максимальный размер которого меньше 900 байт, вашим первичным ключом, например, вы не можете сделать NVARCHAR(2000)
вашим первичным ключом, но nvarchar(50)
работает.
Требования к первичному ключу:
- должно быть уникальным
- не должно быть NULL
Если эти требования выполнены - вы хорошоgo.
Следует иметь в виду одну вещь: ваш первичный ключ - по умолчанию - также ваш ключ кластеризации, ключ, по которому содержимое таблицы физически упорядочено (немного упрощено).Таким образом, этот ключ кластеризации похож на адрес или указатель вашей строки данных в таблице, и он будет включен в каждый некластеризованный индекс, который есть в вашей таблицеТоже.
Если у вас есть таблица, в которой нет ни одного, или только одного некластеризованного индекса - не беспокойтесь.Но если в вашей таблице довольно много некластеризованных индексов (например, таблица Customer
, которая может иметь четыре, пять индексов или даже больше), то такой широкий ключ кластеризации (100 байт) переменной ширины не идеален.В этом случае лучше использовать что-то вроде INT IDENTITY
в качестве суррогатного ключа и поместить в этот столбец первичный ключ / кластерный индекс.Это сэкономит вам много дискового пространства и сделает вашу таблицу намного лучше.
Узнайте больше о том, что делает хороший ключ кластеризации (на занятой, большой таблице) в блоге Кимберли Триппаpost Постоянно увеличивающийся ключ кластеризации - дебаты по кластерному индексу .......... снова! - высокообразовательный!