Есть ли способ использовать индекс, чтобы избежать сортировки файлов, когда ИЛИ используется в запросе MySQL?
У меня есть следующий запрос и следующие 2 индекса, но я все еще получаю сортировку файлов. Есть ли способ оптимизировать это дальше, чтобы избежать сортировки файлов, или мне просто нужно жить с этим?
Запрос:
SELECT * FROM table WHERE row1 > '0' OR row2 = '1' ORDER BY id DESC
Индексы:
row1
row2, идентификатор
ОБЪЯСНИТЬ вывод:
Использование sort_union(row1,row2_id); Используя где; Использование сортировки файлов
3 ответа
Да, ты можешь. Просто добавьте индекс как (id, row1, row2).
Этот индекс будет работать, потому что строки в нем будут предварительно отсортированы, а mySQL нужно будет только выбрать подходящие строки.
Более того, объединение индексов sort_union() в любом случае не является ЭТОМ хорошей оптимизацией для mySQL.
Это немного поздно для ответа, но я хочу сказать, что, используя "или", вероятно, вызывает эту проблему. Вы можете попробовать использовать объединение с двумя разными запросами.