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

Основной ключ Восхождение по убыванию

В Sql Server у меня есть таблица с первичным ключом Identity. Часто мне нужны последние несколько новых записей, поэтому я захватываю Top n отсортированным по убыванию первичного ключа. Должен ли я определять индекс первичного ключа как нисходящий, или он не имеет значения? то есть, если они находятся в порядке возрастания, то может ли sql так же эффективно работать назад?

4b9b3361

Ответ 1

С точки зрения чисто запросов, не имеет значения, сбрасывается ли ваш ключ или восходит, если вы хотите вытащить N самых последних или N самых старых записей:

Внутренние алгоритмы SQL Server могут перемещаться одинаково эффективно в обоих направлениях по индексу с одним столбцом, независимо от последовательности, в которой хранятся ключи. Например, указание DESC на индекс с одним столбцом не делает запросы с предложением ORDER BY IndexKeyCol DESC быстрее, чем если для индекса указана ASC.

http://msdn.microsoft.com/en-us/library/aa933132(SQL.80).aspx

Однако при практически любых нормальных обстоятельствах вы хотите, чтобы ваш первичный ключ был восходящим и последовательно последовательным, чтобы предотвратить фрагментацию. SQL Server оптимизирован для физического добавления новых записей в конец файла базы данных. Если нужно вставить каждую новую запись вверху и нажать все вниз, это, вероятно, приведет к почти 100% фрагментации.

Ответ 2

Это не имеет никакого значения.

Я даже не могу представить, почему это можно объявить в любом случае.