Я пытался найти решение, но не могу найти его.
У меня есть таблица оценок постов с колонкой «рейтинг», которая равна 0 или 1, в зависимости от того, поднял ли человек большой палец вверх или вниз. В настоящее время существует около 2000 утвержденных сообщений и 2,8 миллиона оценок.
Я хотел бы найти 20 лучших постов, которые были одобрены модерацией. Вот запрос, который я думал, будет работать:
SELECT p.* FROM `posts` p
LEFT JOIN `ratings` r ON r.pid=p.id
WHERE p.approved=1
GROUP BY p.id
ORDER BY AVG(r.rating) DESC LIMIT 0,20
Я добавил индекс для r.rating, и запрос все еще занимает около 3 секунд. Как сократить это время?