Если у меня есть таблица SQL Server с кластеризованным индексом в поле datetime, то перед вставками устанавливается значение DateTime.Now(из С#), должен ли индекс возрастать или нисходить, чтобы избежать реорганизации таблицы?
Спасибо.
Если у меня есть таблица SQL Server с кластеризованным индексом в поле datetime, то перед вставками устанавливается значение DateTime.Now(из С#), должен ли индекс возрастать или нисходить, чтобы избежать реорганизации таблицы?
Спасибо.
Не имеет значения - но действительно ли DateTime будет уникальным? Я бы выбрал кластерный индекс только для DateTime - вместо этого я использовал бы идентификатор INT IDENTITY или BIGINT IDENTITY и поместил бы обычный некластеризованный индекс в DateTime (так как это действительно не гарантировалось быть уникальным......)
Марк
PS: Как первичный ключ, общий консенсус относительно того, какой кластеризованный ключ должен быть:
Столбец (столбцы), составляющие кластеризованный ключ (включая этот 4-байтовый идентификатор), добавляются в КАЖДЫЙ ВХОД В КАЖДОМ некластеризованном индексе - поэтому вы хотите, чтобы они были как можно более тонкими.
PS 2: кластерный ключ (ключи) добавляются к каждому некластеризованному индексу, потому что тот способ, которым SQL Server будет извлекать целые строки, когда он найдет значение поиска в некластеризованном индексе. Это строка "location" в базе данных, так сказать. Поэтому он должен быть уникальным и узким.
Прочтите этот http://www.sqlskills.com/BLOGS/KIMBERLY/post/GUIDs-as-PRIMARY-KEYs-andor-the-clustering-key.aspx
Если чтение часто основывалось на поле datetime, хорошим выбором является составной ключ даты и идентификатора - в этом порядке (дата, личность).