Правильные заказа на поле для индекса покрытия - MySQL

StackOverflow https://stackoverflow.com/questions/4800259

Вопрос

Есть ли стандартный порядок создания индекса покрытия для таблицы в 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 использует несколько индексов с несколькими колоннами таким образом, что запросы быстрые, когда вы указываете известное количество для первого столбца индекса в предложении, даже если вы не указываете значения для других столбцов.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top