使用偏移量编写组查询更有效

时间:2019-03-20 11:49:53

标签: postgresql

我看到自己不时遇到相同类型的查询,因为它限制了结果的数量。我有一个通知表,需要将多个通知分组在一起,这样我才能列出“像您的评论一样的x和y人”列表。

一些记录显示我的意思:

notification_id | fk_comment_id | from_user_id | to_user_id
-----------------------------------------------------------
1                 1               12            13
2                 1               25            13
3                 2               23            13

假设我是13位用户,我想获取最近的10条通知(按fk_comment_id分组),但是我想在1条fk_comment_id上获取 all 条通知,例如,如果fk_comment_id有2条通知(如上),查询结果应计11条记录(因为它必须包含有关1条comment_id的所有通知)

目前有效的查询是cte:

with cte as 
    (select fk_comment_id from notifications
        where to_user_id = 13
        group by fk_comment_id
        order by fk_comment_id desc
        limit 10 offset 0)

select * from notifications where fk_comment_id in (select fk_comment_id from cte)

但这还能更有效地编写吗?例如递归查询?

0 个答案:

没有答案