У меня есть таблица из 200 тыс. записей с столбцами INT. Я хочу создать индекс, чтобы делать запросы быстрее. Это запрос, который я хотел бы выполнить: SELECT A,B,C,D,E FROM table WHERE A=23 and (B=45 or C=43)
. Я создал следующие индексы: B
, ACD
, C
, ABC
.
С помощью команды EXPLAIN
я обнаружил, что MySQL выбирает индекс ACD
. Поэтому я продолжал заполнять таблицу большим количеством значений, и я понял, что MySQL переключался между указанными выше индексами (не всегда один и тот же).
Так как существует много вложений, наличие различных индексов вызовет проблемы с производительностью, и мы можем предположить, что к этой таблице обращаются другие запросы, для которых требуются разные столбцы, где каждый индекс имеет смысл.
Мне известно о USE INDEX()
, но я хотел бы понять, следует ли нам доверять MySQL, чтобы выбрать правильный индекс.