swanrnd
@swanrnd
Издатель HTML5 игр

Какой индекс выбрать ASC или DESC?

Есть таблица, к которой постоянно идут запросы. Такие:
SELECT TOP 50 * FROM table ORDER BY id DESC;

Также в таблицу добавляются новые записи, с большим id.
Id - столбец идентификатор.

Какую сортировку для индекса выбрать и насколько это принципиально.
Что бы было быстро, а также не приходилось перестраивать или реорганизовывать индексы.
  • Вопрос задан
  • 55761 просмотр
Пригласить эксперта
Ответы на вопрос 2
k1lex
@k1lex
Программист торг. сети. C# (WPF, WinForms), T-SQL
Я не очень пойму чего вы ходите добиться.
ASC и DESC всего лишь направления для сортировки.

SELECT TOP 50 * FROM table ORDER BY id DESC - даст вам 50 последних записей
SELECT TOP 50 * FROM table ORDER BY id ASC - даст вам 50 первых записей.

Поясните, может это я еще дзен не постиг?
Ответ написан
@bizon2000
Java-программист
Порядок сортировки индекса сказывается только при создании индексов с составными ключами, т.е., с ключами из нескольких полей. Т.е., если у вас имеется индекс с ключом (field1, field2, field3) и более частыми являются запросы со следующей сортировкой:
ORDER BY field1 ASC, field2 DESC, field3 ASC, то тогда вам следует использовать индекс (field1 ASC, field2 DESC, field3 ASC) или (field1 DESC, field2 ASC, field3 DESC). Когда же у вас индекс имеет ключ из одного поля, то порядок сортировки его не имеет значения, т.к. SQL engine умеет сканировать индекс в обоих направлениях.
Для добавления записей и для выборок одиночных записей порядок сортировки индекса не играет роли - производительность будет абсолютно одинакова, а для выборки последовательности записей, т.е. при сканировании диапазона индекса этот порядок уже может сиграть, но надо понимать, что на достаточно больших диапазонах индекса. Если просто выгребать всего 50 первых записей и без WHERE, то различие будет незаметно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы