gpt4 book ai didi

postgresql - 在 Greenplum 上分块执行查询

转载 作者:行者123 更新时间:2023-11-29 14:01:03 24 4
gpt4 key购买 nike

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

WHERE date > now()::date - interval '365 days' and date < now()::date

如果今天执行,这将获取一年的数据。现在,如果明天执行相同的查询,将再次获取 365 天的数据。但是,我已经有了上次运行的最近 364 天的数据。我只想获取一天的数据并从系统中删除一天的数据,这样我就可以得到性能更好的 365 天数据。此数据将存储在单独的临时表中。

为此,我创建了一个增量查询,它将在下次运行时执行。但是,当“日期”列在 SELECT 子句中不具有但在 WHERE 条件中具有功能时,删除单个日期数据被证明是棘手的,因为临时表模式将没有“日期”列。

所以我想到了以 block 的形式执行批量查询并为该 block 分配一个 ID。这样,我可以删除一个 block 并添加一个 block ,而其他数据不受影响。

有没有办法在 postgres 或 greenplum 中实现同样的效果?就像一些内置功能。我浏览了整个文档,但找不到任何内容。

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

最佳答案

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

关于postgresql - 在 Greenplum 上分块执行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17726405/

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