Я бы вычислил вашу <today - time range>
часть клиентской части, прежде чем даже подключиться к базе данных.
Кроме того, это будет зависеть от того, какие у вас есть индексы, какая нагрузка на ваш сервер (что он хранит в кэше в памяти) и объем данных в каждой таблице (сколько комментариев на типичный пост, сколько постов в категория и т. д.). Другими словами, вам необходимо профиль . Если все, что является спорным (это не так!), Приличным оптимизатор запросов должен быть в состоянии в значительной степени заботиться о любых вещах еще.
Есть пара вещей, которые я бы сделал по привычке, но они не должны иметь значения в этом случае, не зная вашей системы больше. Но главное, что я думаю об объеме.
В общем, мне нравится выражать свои запросы так, чтобы, если соединения выполнялись по порядку, набор результатов сохранялся как можно меньшим как можно дольше. В этом случае это, скорее всего, означало бы перечисление соединения postCategory
над соединением comments
и перемещение условия "= <MyCategoryID>
" вверх, чтобы оно стало частью выражения соединения.