Правильные порядки полей для покрытия индекса - MySQL - PullRequest
2 голосов
/ 26 января 2011

Существует ли стандартный порядок создания индекса покрытия для таблицы в MySQL? То есть, если у меня есть запрос с предложением where, order by и полями в операторе select, в каком порядке у меня будут поля индекса, чтобы правильно создать покрывающий индекс?

Ответы [ 2 ]

3 голосов
/ 26 января 2011

Покрывающий индекс принимает список столбцов в списке через запятую.Этот список просматривается / просматривается, начиная с левой стороны.Если левый крайний столбец не используется, индекс не используется.Это означает наличие списка столбцов, например:

col_a, col_b, col_c

Если запрос не содержит ссылку на col_a, он не будет использоваться.Если порядок изменяется на:

col_c, col_b, col_a

..., тогда в запросе должна указываться ссылка на col_c.Продолжая использовать второй пример столбца индекса покрытия, col_b или col_a необязательно указывать в запросе, но оценка перемещается столбец за столбцом слева направо.

Ссылки на столбцы для индексаИспользование может быть в следующих пунктах:

  • SELECT
  • ГДЕ
  • GROUP BY
  • HAVING
  • ORDER BY

Ссылка:

1 голос
/ 26 января 2011

Оптимизация MySQL 7.5.2 Индексы с несколькими столбцами говорит:

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

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

...