Составной индекс также хорош для запросов во втором поле? - PullRequest
0 голосов
/ 02 марта 2020

Мы используем db как mysql и имеем таблицу с 6 полями, из которых мы создали составной индекс для двух полей, скажем (A, B). В тех случаях, когда есть запрос только в поле B, запрос поступает в медленный радар запроса. Можно ли полностью оптимизировать запросы только в поле B с помощью составного индекса?

Или Нам нужно создать отдельный индекс для поля B для лучшей оптимизации.

1 Ответ

2 голосов
/ 02 марта 2020

Чтобы узнать, что делает оптимизатор запросов, используйте EXPLAIN .

Чтобы ответить на ваш вопрос - если ваш индекс включен (A, B), и ваш запрос не включает A в предложении where, индекс не будет использоваться.

Для понимания почему, представьте, что вы создаете бумажный каталог своей коллекции mov ie. Каждый мов ie идет на учетную карточку, и вы упорядочиваете каталог по годам, а затем по названию фильма. Это позволяет легко найти все фильмы, которые вышли в 2019 году, но для поиска мов ie под названием «Джокер» вам потребуется go по всем карточкам по очереди.

...