Есть ли способ использовать индекс, чтобы избежать сортировки файлов, когда ИЛИ используется в запросе 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.

ORDER BY ROW2,ID или добавить индекс по ID.

Это немного поздно для ответа, но я хочу сказать, что, используя "или", вероятно, вызывает эту проблему. Вы можете попробовать использовать объединение с двумя разными запросами.

Другие вопросы по тегам