I have slow query:
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;
It's because I use DISTINCT but I can find out how I can change this query. I can't use GROUP BY because I need to be ordered by post_time. Please advise
This might be worth a try:
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;
The reason it might be faster is that Postgres can do the time calc only once, rather than do the calc for each row returned.