如何使用DISTINCT减少查询执行时间?

时间:2014-04-07 11:38:03

标签: sql postgresql database-design database-performance

我的查询速度很慢:

   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进行排序。请指教

1 个答案:

答案 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,而不是为返回的每行执行计算。