Краткий ответ: Да.
Длинный ответ:
Индекс с одним столбцом для столбца с низким числом элементов (логическое / enum / et c) редко используется. Но многостолбцовый индекс, в том числе такой, вероятно, будет полезен, иногда очень эффективен.
Количество элементов (селективность) каждого столбца в многостолбцовом индексе не имеет значения. И не имеет значения, в каком порядке вы помещаете их в указатель.
Один пример очень эффективен:
WHERE foreignId = ? AND approved = TRUE
ORDER BY foo
LIMIT 10
вместе с
INDEX(foreignId, approved, -- in either order
foo)
В этом случае он может выполнить всю фильтрацию, затем перейти на ORDER BY
и избежать сортировки. Но что более важно, он может остановиться после 10 рядов. Без этого индекса он мог бы собрать тысячи строк, отсортировать их и затем очистить 10.
Внешние ключи ... Убедитесь, что у вас есть составной ключ, независимо от того, есть ли у вас FK. Одиночный столбец FK должен заметить, если у вас есть составной индекс , начинающийся с этого столбца, и не создавать дополнительный индекс.
Дополнительные обсуждения: http://mysql.rjweb.org/doc.php/index_cookbook_mysql