Порядок столбцов в многоколоночном индексе в MySQL
Я пытаюсь понять, что лучше при определении многоколоночных индексов:
- Сначала введите наиболее избирательный столбец (более высокая мощность, для скорости?); или
- Сначала введите менее избирательный столбец (нижняя мощность, для сжатия индекса?)
Или, может быть, это зависит от того, оптимизирую ли я скорость или пространство?
Ответы
Ответ 1
Порядок столбцов должен соответствовать порядку, в котором столбцы запрашиваются позже, или MySQL не будет их использовать.
Это вопрос, о котором вы должны действительно думать.
Подробнее здесь.
UPDATE:
Для вашего вопроса о мощности, возможно, прочитайте this.
Это похоже на ваш вопрос? Ответит ли он на это?
Ответ 2
Всегда ставьте наиболее избирательный столбец в начале, редко существует причина для другого.
или, может быть, это зависит от того, оптимизирую ли я скорость или пространство?
Позвольте мне сказать так. Какой смысл использовать меньше хранилища, если он вызывает индекс not to be used at all
? Индекс низкой мощности (в порядке порядка столбцов) обычно не используется, если он не является индексом покрытия для запроса, потому что будет очень дорого вернуться к данным для других столбцов.
Точка индексов заключается в том, чтобы помочь запросу и иметь их в правильном порядке (мощность) всегда должно быть первым и самым важным соображением.