以下を使用して、「サーバー」に基づいて最新の一意のレコードのリストを返します
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
このタイプのクエリを実行するより効率的な方法はありますか?