Должен ли порядок по столбцу быть частью индекса - PullRequest
0 голосов
/ 22 ноября 2011
create table foo (id, name varchar(255));
create table foo_values (id, foo_id, name varchar(255), value varchar(255));

create table bar (id, name varchar(255));
create table bar_values (id, bar_id, name varchar(255), position integer);

Наши запросы будут выглядеть как

select * from foo_values where foo_id=<foo_id> and name=<some-name> order by value;
select * from bar_values where bar_id=<bar_id> and name=<some-name> order by position;

We have a multi key index for foo_id and name in foo_values.
We have a multi key index for bar_id and name in bar_values.

Имеет ли смысл включать значение и позицию в соответствующие им ключевые индексы или нет необходимости.

Ответы [ 4 ]

3 голосов
/ 22 ноября 2011

Нет, я не думаю, что это что-то изменит, посмотрим, сможете ли вы это измерить.

2 голосов
/ 22 ноября 2011

Если вы добавите значение к индексу foo и поместите его в индекс бара, это, вероятно, будет быстрее, но только для этих запросов и снизит производительность (особенно, если эти столбцы не являются относительно статичными, так как ключи индекса будут двигаться) при записи.

Так что это может иметь смысл (если в этом ключе отсортировано много строк).

Лучший способ увидеть влияние индекса - использоватьОбъясните, чтобы посмотреть на план выполнения с и без определенного индекса.

2 голосов
/ 22 ноября 2011

Нет, вы можете заказать по любому столбцу, проиндексированному или нет, но его индексирование может ускорить запрос.

0 голосов
/ 22 ноября 2011
  • Ключевое слово ORDER BY используется для сортировки набора результатов по указанному столбцу.
  • Ключевое слово ORDER BY по умолчанию сортирует записи в порядке возрастания.
  • Если вы хотите отсортировать записи в порядке убывания, вы можете использовать ключевое слово DESC.

Итак, Нет , порядок по не должен быть частью индекса. Хотя, если есть миллионы записей, вы должны составить индекс для каждой из них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...