Допустим, у меня есть сайт, такой как Stackoverflow, с сообщениями, на которые люди могут отвечать, и я хотел бы иметь интерфейс для сортировки сообщений по количеству ответов
Это в конечном итоге будет иметь бесконечную нумерацию прокрутки, поэтому показ10 результатов за раз.
Вот пример запроса для этого:
SELECT *, (SELECT COUNT(*)
FROM post_reply pr
WHERE pr.convo_id = post.convo_id) as replies
FROM post
ORDER BY replies
LIMIT 10;
Это работает, но это слишком медленно. У меня есть сотни тысяч сообщений, и это приводит к тому, что выполнение запроса занимает более 30 с.
Индекс улучшит скорость, но я не знаю, как реализовать индекс для подзапроса.
Материализованное представление также может работать, но обновление материализованного представления каждый раз, когда кто-то отвечает на сообщение, также кажется слишком медленным.
Есть ли хорошее решение этой проблемы?