【发布时间】:2015-04-01 10:55:06
【问题描述】:
假设在名为tracker 的 PostgreSQL 表中有 3 行。我想单独获取最新的更新记录。请帮我实现它。
(issue_id,priority,ingest_date)
(1,1,"2015-01-27 00:00:00")
(1,2,"2015-01-28 00:00:00")
(1,3,"2015-01-29 00:00:00")
我试着给
select *
from tracker
where ingest_date = (select max(ingest_date) from tracker);
这对我来说很好。 但是有没有更好的方法可以查询数据库?
提前致谢。
我想要类似的东西
select *
from etl_change_fact
where ingest_date = max(ingest_date);
但我得到了这个错误
**ERROR: aggregates not allowed in WHERE clause
**
【问题讨论】:
-
如果您在
ingest_date上有一个索引,那么您的第一个查询可能是最有效的方法。 -
我同意马的观点。假设一个索引,子查询将通过大多数其他方法将索引或表扫描转换为索引查找。非常有效。
标签: sql performance postgresql select optimization