Как наилучшим образом использовать индексы в MySQL? - PullRequest
0 голосов
/ 20 сентября 2018

Я должен выбрать значения из таблицы, которая содержит около 1 миллиона записей.Какой из моих запросов будет более эффективным?

Запрос 1:

select * from table1 
where indexedcolumn1 < value1 
and unindexedcolumn1 < value 2 
and indexedcolumn2 < value2;

Запрос 2:

select * from table1 
where indexedcolumn1 < value1 
and indexedcolumn2 < value2 
and unindexedcolumn1 < value 2;

Как наилучшим образом использовать индексы?

Ответы [ 2 ]

0 голосов
/ 30 сентября 2018

Индексируйте каждый из 3 столбцов.Оптимизатор выберет лучший индекс на основе статистики.Возможно, он по-прежнему использует неправильный индекс, но это лучший из доступных токов.

0 голосов
/ 20 сентября 2018
  1. Когда последовательность условий (столбцов) в предложении WHERE не имеет смысла, оптимизатор запросов mySQL не учитывает это.Поэтому (как упоминалось выше) ваши запросы идентичны.
  2. Используйте команду EXPLAIN (пример: объяснение select * from ....), чтобы узнать, как ваши запросы выполнялись сервером.Подробнее о том, как интерпретировать вывод EXPLAIN в официальных документах на Google (есть много хороших статей об EXPLAIN).
  3. Попробуйте проиндексировать неиндексированный столбец, так как это лучший (и я думаю, единственный)1) способ повысить производительность ваших запросов.Один неиндексированный столбец обычно разрушает все остальные усилия.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...