Ответ 1
Как правило, в индексе с несколькими столбцами вы хотите, чтобы столбцы с наивысшей мощностью или, другими словами, наибольшее количество различных значений, приходили первым в индекс.
Чтобы быть более точным, сначала нужно, чтобы столбец с наименьшим количеством совпадений соответствовал вашим критериям поиска, чтобы вы могли сузить результирующий набор как можно больше, но в целом он такой же, как и самая высокая мощность.
Итак, в вашем примере вам понадобится столбец, в котором будут иметь миллионы различных значений в индексе перед тем, у которого всего 6 различных значений.
Предполагая, что вы выбираете только одну строку из миллионов значений, она позволяет быстрее удалять больше строк.
При рассмотрении двух столбцов с одинаковой мощностью сначала помещаем меньший (столбцы INTEGER перед столбцами VARCHAR), потому что MySQL может быстрее сравнивать и перебирать их быстрее.
Одно из предостережений заключается в том, что если вы выбираете диапазоны (например, WHERE datecol > NOW()
), то вы хотите, чтобы столбцы диапазона были справа от вас, а столбцы с одной константой (например, WHERE id = 1
) слева. Это связано с тем, что ваш индекс может использоваться только для поиска и упорядочивания до точки первого значения диапазона.