У меня есть запрос, сформированный UNION ALL из двух таблиц. Результаты должны быть упорядочены и разбиты на страницы (как обычный список веб-приложения).
Исходный запрос (упрощенный):
SELECT name, id
FROM _test1 -- conditions WHERE
UNION ALL
SELECT name, id
FROM _test2 -- conditions WHERE
ORDER BY name DESC LIMIT 10,20
Проблема в том, что две таблицы имеют более 1 миллиона строк в каждой, и запрос выполняется очень медленно.
Как я могу получить оптимизированный список с разбивкой на страницы из UNION ALL?
Постданные:
Я воспользовался поиском Stack Overflow и нашел несколько похожих вопросов, но ответ был неверным или вопрос не совсем тот же. Два примера:
Оптимизация запроса UNION mysql
Объединение операций UNION и LIMIT в запросе MySQL
Я удивлен, что в Stack Overflow никто не смог ответить на этот вопрос. Может быть, нельзя сделать этот запрос более эффективно? Какое может быть решение этой проблемы?
UNION ALL
, а вORDER BY
. - person NPE   schedule 27.09.2011LIMIT 10,20
оптимизировать будет несложно, а дляLIMIT 5000,20
это будет довольно сложно, если не невозможно. - person ypercubeᵀᴹ   schedule 27.09.2011