【发布时间】:2020-11-19 04:09:48
【问题描述】:
我有一张表myTable,有四列:
id UUID,
user_id UUID ,
text VARCHAR ,
date TIMESTAMP
(id 是主键,user_id 在此表中不是唯一的)
我想检索按其最新条目排序的user_ids,我目前正在使用此查询:
SELECT user_id FROM myTable GROUP BY user_id ORDER BY MAX(date) DESC
问题是GROUP BY 需要很长时间。有没有更快的方法来实现这一点?我尝试使用带有PARTITION BY 的窗口函数,如此处所述Retrieving the last record in each group - MySQL,但它并没有真正加快速度。我还确保 user_id 已编入索引。
我的 postgres 版本是 10.4
编辑:我当前使用的上述查询在功能上是正确的,问题是它很慢。
【问题讨论】:
-
“按最新条目排序”是什么意思?您想仅查看最新条目(您的标题所暗示的内容)还是全部,但使用某种特殊的排序顺序?
-
我想要 all user_ids,按每个 user_id 的最新日期排序。上面的查询是正确的,只是速度很慢。我不是在寻找完整的条目,只有 user_ids。
-
那你为什么不能简单地使用
select user_id from the_table order by user_id, "date" desc? -
也许我解释得不好,我想要所有的 user_id,但每个 user_id 只需要一次。
标签: sql postgresql datetime sql-order-by greatest-n-per-group