-2
我有3個表格:users
,posts
和likes
。如果帖子在創建後的第一個小時內有5個以上的喜歡,則該帖子被稱爲熱帖。以下是用於查詢熱門帖子的列表。任何人都可以幫助我改進這個查詢(如何索引或重寫它)。改善性能postgresql查詢
SELECT post.id,
post.content,
user.username,
COUNT(like.id)
FROM posts AS post
LEFT OUTER JOIN users AS user
ON post.user_id = user.id
INNER JOIN likes AS likes
ON post.id = likes.post_id
AND likes.created_at - INTERVAL '1 hour' < post.created_at
GROUP BY post.id, user.username
HAVING COUNT(like.id) >= 5
ORDER BY post.created_at DESC;
@TimBiegeleisen指數:
如果規劃器選擇嵌套循環連接畢竟,它可能將查詢重寫是有用的它的工作原理。 http://prntscr.com/hidlsc –
您需要爲任何人提供更多信息,以便爲您提供任何有價值的見解。例如,你的表定義,任何現有的索引(如果有的話)和'EXPLAIN'的輸出。此外,儘量不要用大寫字母給表格別名,並刪除所有雙引號(爲了便於閱讀)。 – Nicarus
請** [編輯] **您的問題,併爲所討論的表格(包括所有索引)和使用**'explain(analyze,buffers)'**生成的執行計劃添加'create table'語句。 [**格式化文本**](http://stackoverflow.com/help/formatting)請,[無屏幕截圖](http://meta.stackoverflow.com/questions/285551/why-may-i-not -upload圖像-的代碼上那麼當-要價-A-問題/ 285557#285557) –