我的查询速度很慢:
SELECT DISTINCT ON ( topic_category_id ) * FROM topic t
WHERE abstime ( post_time + 24 * 3600 ) >= now ( )
ORDER BY topic_category_id, post_time DESC LIMIT 10;
这是因为我使用DISTINCT,但我可以找到如何更改此查询。我无法使用GROUP BY,因为我需要通过post_time进行排序。请指教
答案 0 :(得分:1)
这可能值得一试:
SELECT DISTINCT ON ( topic_category_id ) * FROM topic t
WHERE post_time >= abstime(now ( ) - 24 * 3600 )
ORDER BY topic_category_id, post_time DESC LIMIT 10;
它可能更快的原因是Postgres只能执行一次calc,而不是为返回的每行执行计算。