По-моему, второй вариант предпочтительней. Он полностью избавит от головной боли в будущем, когда количество данных может увеличиться. Эффективней тратить вычислительные ресурсы в моменты, возникающие реже — в данном случае, добавление/удаление комментариев происходит значительно реже, чем их просмотр.
Реализовать эту логику можно с помощью mysql триггеров, которые будут автоматически обновлять число комментариев при каждом добавлении/удалении
CREATE TRIGGER `comment_add` AFTER INSERT ON `post_comments`
FOR EACH ROW BEGIN
SET @post_id = NEW.post_id;
SET @comments_num = (SELECT COUNT(id) FROM post_comments WHERE post_id = @post_id);
UPDATE `post` SET `comments_num` = @comments_num WHERE `id` = @post_id;
END;
Полный дамп
тут