Доброе утро, ребята,
Я думаю, как написать это легко и эффективно
Итак, у меня есть таблица сообщений (id, user_id, created_at) и таблица комментариев (id, user_id, post_id, created_at). Мне нужно найти все сообщения, где их последний комментарий был оставлен гостевым пользователем (user_id равен NULL) и со вчерашнего дня. Таким образом, в этих постах не должно быть комментариев за сегодняшний день, но должен быть хотя бы один за вчерашний день. И ПОСЛЕДНИЙ комментарий со вчерашнего дня должен быть добавлен гостевым пользователем (никаких других комментариев после этого).
Я могу получить то, что мне нужно, но сложно написать умный запрос, который будет выполняться эффективно. Предполагаемое количество записей в результате — более 1к (у нас каждый день тысячи новых постов и десятки тысяч новых комментариев).
Имеет ли смысл добавлять индекс к полям created_at и, возможно, мне придется каким-то образом денормализовать свои данные, чтобы добиться хороших результатов (до 500 мс в худшем случае)
Любые мысли приветствуются.
Спасибо.