Порядок столбцов в многоколоночном индексе в MySQL

Я пытаюсь понять, что лучше при определении многоколоночных индексов:

  • Сначала введите наиболее избирательный столбец (более высокая мощность, для скорости?); или
  • Сначала введите менее избирательный столбец (нижняя мощность, для сжатия индекса?)

Или, может быть, это зависит от того, оптимизирую ли я скорость или пространство?

Ответы

Ответ 1

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

Подробнее здесь.

UPDATE:

Для вашего вопроса о мощности, возможно, прочитайте this. Это похоже на ваш вопрос? Ответит ли он на это?

Ответ 2

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

или, может быть, это зависит от того, оптимизирую ли я скорость или пространство?

Позвольте мне сказать так. Какой смысл использовать меньше хранилища, если он вызывает индекс not to be used at all? Индекс низкой мощности (в порядке порядка столбцов) обычно не используется, если он не является индексом покрытия для запроса, потому что будет очень дорого вернуться к данным для других столбцов.

Точка индексов заключается в том, чтобы помочь запросу и иметь их в правильном порядке (мощность) всегда должно быть первым и самым важным соображением.