На самом деле не имеет значения - но является ли DateTime действительно уникальным? Я бы не выбрал кластеризованный индекс только для DateTime - вместо этого я использовал бы идентификатор INT IDENTITY или BIGINT IDENTITY и поместил бы обычный некластеризованный индекс в DateTime (так как это действительно не гарантировано быть уникальным ......)
Марк
PS: Как первичный ключ, общий консенсус в отношении того, что кластерный ключ должен быть является:
- уникального (в противном случае SQL Server будет «uniquify» его, добавив 4- байтовый уникальный идентификатор)
- как узкий как можно
- статического (никогда не меняются)
- когда увеличивающейся
Колонка (ы), которые составляют кластерный ключ (в том числе, что 4 байта uniqueifier) добавляются КАЖДЫЙ ВХОД В КАЖДЫЙ некластеризованный индекс - так что вы хотите, чтобы они были как можно более тонкими.
PS 2: кластерный ключ (ключи) добавляются к каждому некластеризованному индексу, потому что именно так SQL Server будет извлекать целые строки после того, как он найдет значение поиска в некластеризованном индексе. Это так называемое «местоположение» в базе данных, так сказать. Поэтому он должен быть уникальным и узким.
Таким образом, кластеризованный индекс должен быть уникальным? – Eyvind
Если это * НЕ * уникально, тогда SQL Server автоматически добавит 4-байтовый «уникальный идентификатор» - если это вообще возможно, постарайтесь избежать этого! –
Спасибо, не знал этого. Итак, учитывая, что в рассматриваемой таблице есть PK, который является уникальным идентификатором, было бы лучше создать кластерный индекс в поле datetime и PK? – Eyvind