Postgresql 在Greenplum上分块执行查询

Postgresql 在Greenplum上分块执行查询,postgresql,greenplum,Postgresql,Greenplum,我正在尝试创建一种将批量日期查询转换为增量查询的方法。例如,如果查询的where条件指定为 WHERE date > now()::date - interval '365 days' and date < now()::date 如果今天执行,这将获取一年的数据。现在,如果明天执行相同的查询,将再次获取365天的数据。然而,我已经有了上次运行的最后364天的数据。我只想从系统中提取一天的数据并删除一天的数据,这样我就可以得到性能更好的365天数据。该数据将存储在单独的临时表中 为

我正在尝试创建一种将批量日期查询转换为增量查询的方法。例如,如果查询的where条件指定为

WHERE date > now()::date - interval '365 days' and date < now()::date
如果今天执行,这将获取一年的数据。现在,如果明天执行相同的查询,将再次获取365天的数据。然而,我已经有了上次运行的最后364天的数据。我只想从系统中提取一天的数据并删除一天的数据,这样我就可以得到性能更好的365天数据。该数据将存储在单独的临时表中

为了实现这一点,我创建了一个增量查询,它将在下一次运行中执行。但是,当该日期列不在SELECT子句中,而是在WHERE条件中,因为临时表架构将不具有date列时,删除单个日期数据被证明是很棘手的

因此,我考虑分块执行批量查询,并为该块分配一个ID。这样,我可以删除块并添加块,而其他数据不会受到影响

有没有一种方法可以在博士后或青梅中达到同样的效果?像一些内置的功能。我查阅了全部文件,但没有找到任何


另外,如果没有,这个问题有没有更好的解决方案。

我认为最好使用聚合表之类的东西来处理这个问题。我假设问题是您需要处理大量数据的重聚合。这并不一定会导致规范化问题,而且数据仓库通常都是非规范化的。在这方面,您需要的聚合可以每天存储,这样您就可以每天将已关闭数据和未关闭数据减少到一条记录。将聚合保留为无法更改的数据是避免正常的插入/更新异常所必需的,而这正是规范化所阻止的