Было бы нецелесообразно создавать индекс только на enabled
. Но может быть полезно создать составной индекс, в который включен enabled
, для достижения ORDER BY optimisation.
Например, если что-то подобное было обычным запрос:
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
, то все условие WHERE и ORDERing можно было бы взять непосредственно из индекса, давая более быстрые результаты.
Как всегда, это будет зависеть от того, какие запросы вы делаете; вы должны EXPLAIN ваши самые общие запросы, чтобы точно проверить, что он делает.
Ваши мысли были именно тем, чего не хватало, чтобы сделать точку. Я решил добавить поля с включенными полями в таблицы, где ожидаю огромные наборы результатов. Поскольку всегда существует предложение ORDER, это уменьшит время сканирования для разрешенных строк. Но для таблиц, где я ожидаю только нескольких совпадений, одно-на-одно сканирование не изменит ситуацию. – sibidiba