gpt4 book ai didi

sql - Postgresql,根据唯一字段从表中获取最新条目

转载 作者:行者123 更新时间:2023-11-29 12:38:23 26 4
gpt4 key购买 nike

我正在使用以下内容返回基于“服务器”的最新唯一记录列表

select server, fail, date, time
from (
select server, fail, date, time,
rank() over (partition by server order by date desc, time desc) as rank
from querytimes
) dt
where dt.rank <= 1;

它可以工作,但是速度很慢。

时间:21470.742 毫秒

输出示例,

  server       | fail |    date    |   time
-------------------+------+------------+----------
serv1.test.com | No | 2013-02-21 | 10:25:03
serv2.test.com | No | 2013-02-21 | 10:25:03
serv3.test.com | No | 2013-02-21 | 10:25:03
serv4.test.com | No | 2013-02-21 | 10:25:03
serv5.test.com | No | 2013-02-21 | 10:25:03
serv6.test.com | No | 2013-02-21 | 10:25:03
serv7.test.com | No | 2013-02-21 | 10:25:02
serv8.test.com | No | 2013-02-21 | 10:25:01
serv9.test.com | No | 2013-02-21 | 10:25:01
serv10.test.com | No | 2013-02-21 | 10:25:02
serv11.test.com | No | 2013-02-21 | 10:25:02
serv12.test.com | No | 2013-02-21 | 10:25:02
serv13.test.com | No | 2013-02-21 | 10:25:01
serv14.test.com | No | 2013-02-21 | 10:25:01

是否有更有效的方法来执行此类查询?

最佳答案

您可以尝试 PosgreSQL 特定的 DISTINCT ON 子句,例如:

select distinct ON (server) server, fail, date, time
from querytimes
order by server, date desc, time desc;

如果速度不够快,请尝试在 (server,date,time) 上添加索引。

附言对列名称使用 datetime 等保留字不是一个好主意。

关于sql - Postgresql,根据唯一字段从表中获取最新条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15007516/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com