Max*_*xym 0 postgresql performance
我有以下问题:我的表是大的(数百万个数据行),这是我处理的临时数据.我需要根据某些标准选择一列的最大值和最小值,处理此信息并根据相同的标准删除数据.实际上,最简单的实现看起来像:
select max(col), min(col) from _TABLE_ where _CONDITION_;
...
delete from _TABLE_ where _CONDITION_;
Run Code Online (Sandbox Code Playgroud)
table很大,当我处理它时,在循环中查询,这需要一些时间.我想我可以使用delete中的"返回"来优化它,比如
delete from _TABLE_ where _CONDITION_ returning max(col), min(col);
Run Code Online (Sandbox Code Playgroud)
这绝对是我需要的,但是...它根本不起作用:)说我不能在返回子句中使用聚合函数...
有没有什么好方法可以改进两个查询(选择数据的最大/最小值并删除相同的数据)来代替一个查询?任何诡计?
感谢Maxym提供的任何信息
你可以做:
with foo as(delete from table where _CONDITION_ returning col)
select max(col), min(col) from foo
Run Code Online (Sandbox Code Playgroud)