Правильные заказа на поле для индекса покрытия - MySQL
-
22-10-2019 - |
Вопрос
Есть ли стандартный порядок создания индекса покрытия для таблицы в MySQL? Это означает, что если у меня есть запрос, в котором есть пункт, порядок, и поля в операторе SELECT, в каком порядке у меня будут поля в индекс, чтобы правильно создать индекс покрытия?
Решение
Индекс покрытия принимает список столбцов в списке разделенного запятой. Этот список пересматривается/пересматривается, начиная с левой стороны. Если левая большая часть столбца не используется, индекс не используется. Это означает, что есть список столбцов, как:
col_a, col_b, col_c
Если запрос не содержит ссылки на col_a
, это не будет использовано. Если заказ изменен на:
col_c, col_b, col_a
...тогда col_c
нужно ссылаться в запросе. Продолжение использования примера столбца второго индекса покрытия, col_b
или же col_a
Не обязательно быть в запросе, но оценка перемещает столбец по столбцу слева направо.
Ссылки на столбцы для использования индекса могут быть в следующих пунктах:
- ВЫБРАТЬ
- КУДА
- ГРУППА ПО
- Имея
- СОРТИРОВАТЬ ПО
Ссылка:
Другие советы
Оптимизация MySQL 7.5.2 Многочисленные индексы говорит:
MySQL использует несколько индексов с несколькими колоннами таким образом, что запросы быстрые, когда вы указываете известное количество для первого столбца индекса в предложении, даже если вы не указываете значения для других столбцов.
В примере на связанной странице также говорится, что индекс не используется, если вы не указали значение для первого столбца в индексе.