更新时的 oracle 连接深度 table

oracle join depth while updating table

我有一个关于 Oracle 的问题。

我知道 Oracle 只支持在第一个子查询级别使用别名。当我想在更新 table.

时多次分组时,这会造成问题

示例:我有一些服务器组和一个包含有关它们的信息的数据库。我有一个 table 包含有关组的信息,还有一个 table 我用时间戳存储组内特定服务器的工作量(准确地说:我实际上使用了日期)。

现在,由于性能问题,我在服务器 table 中有一个非规范化字段,其中包含该组一天内的最高工作量。

我想做的是

update server_group 
    set last_day_workload=avg(workload1)
    from (select max(workload) workload1
        from server_performance
        where server_performance.server_group_ID_fk=server_group.ID
            and time>sysdate-1
        group by server_performance.server_group_ID_fk)

虽然 ID 是 server_group 的主键,而 server_group_ID_fk 是 server_performance table 的外键引用。到目前为止,我使用的解决方案是将第一个连接写入临时 table 并在下一条语句中从该临时 table 更新。有更好的方法吗?

在这个问题中它还不是这样的问题,但是如果使用临时 table 增加数据量不仅花费一些时间,而且还没有 table RAM 量.

感谢您的回答!

如果我是你,我会在 select 语句中计算出我想要的结果,然后使用 a MERGE statement 进行必要的更新。