Подтвердить что ты не робот

SQL Server: кластерный индекс в datetime, ASC или DESC

Если у меня есть таблица SQL Server с кластеризованным индексом в поле datetime, то перед вставками устанавливается значение DateTime.Now(из С#), должен ли индекс возрастать или нисходить, чтобы избежать реорганизации таблицы?

Спасибо.

4b9b3361

Ответ 1

Не имеет значения - но действительно ли DateTime будет уникальным? Я бы выбрал кластерный индекс только для DateTime - вместо этого я использовал бы идентификатор INT IDENTITY или BIGINT IDENTITY и поместил бы обычный некластеризованный индекс в DateTime (так как это действительно не гарантировалось быть уникальным......)

Марк

PS: Как первичный ключ, общий консенсус относительно того, какой кластеризованный ключ должен быть:

  • уникальный (иначе SQL Server будет "идентифицировать" его, добавив к нему 4-байтовый идентификатор)
  • как узкий насколько возможно
  • static (никогда не меняются)
  • увеличение

Столбец (столбцы), составляющие кластеризованный ключ (включая этот 4-байтовый идентификатор), добавляются в КАЖДЫЙ ВХОД В КАЖДОМ некластеризованном индексе - поэтому вы хотите, чтобы они были как можно более тонкими.

PS 2: кластерный ключ (ключи) добавляются к каждому некластеризованному индексу, потому что тот способ, которым SQL Server будет извлекать целые строки, когда он найдет значение поиска в некластеризованном индексе. Это строка "location" в базе данных, так сказать. Поэтому он должен быть уникальным и узким.