Вопрос

Содержание сайта хранится в базе данных MySQL. 99% содержимого будет включено, но некоторые (пользователи, сообщения и т. Д.) будут отключены. Большинство запросов заканчиваются как WHERE (...) AND enabled

Является ли хорошей идеей, чтобы создать индекс на поле «включен»?

Это было полезно?

Решение

Было бы не так много использовать создание индекса только на enabled в одиночестве. Но может быть полезно создать компонентный индекс, в котором enabled включен, для достижения Порядок по оптимизации.

Например, если что-то подобное это был общий запрос:

SELECT * FROM things WHERE c1='foo' AND enabled=1 ORDER BY c2

Индекс включен c1 позволило бы быстро найти сопоставленные строки, но все равно должны быть отсортированы на отдельном шаге, используя c2.

Индекс включен c1, c2 следует позволить заказанию быть сделано из индекса, значительно ускоряя сортировку запросов, но отсутствие enabled в индексе будет победить это, потому что придется компилировать список совпадающих строк, проиндексированных c1, тогда Сканируйте каждую строку, чтобы проверить это enabled прежде чем сортировать результаты c2.

Если бы индекс был enabled, c1, c2 или c1, enabled, c2, целое состояние и упорядочение может быть сделано непосредственно из индекса, давая более быстрые результаты.

Как всегда, это будет зависеть от того, какие запросы вы делаете; вам следует ОБЪЯСНЯТЬ Ваши самые распространенные запросы, чтобы проверить, что это делает.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top