Есть большая выборка данных (50 млн.), надо вывести из нее первые 10 записей по наиболее свежей дате (после чего подзагружать еще по 10 записей). Сложность в том, что данные сгруппированы в 10 разделов (в каждом от 2-3 до 10 млн. записей) и выводить надо только данные из этого раздела.
SELECT * FROM posts WHERE type=1 ORDER BY updated DESC LIMIT 10;
По этому запросу EXPLAIN показывает, что MySQL сначала выбирает несколько млн. строк, соответствующих нужному типу, после чего их сортирует по дате.
В таблице стоит составной индекс (type, updated), но он не сильно помогает. MySQL использует только первую его часть.
Тоже самое при выводе последующих страниц
SELECT * FROM posts WHERE type=1 AND updated<offset
ORDER BY updated DESC LIMIT 10;
Как оптимизировать этот запрос?