更新时的 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 进行必要的更新。
我有一个关于 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 进行必要的更新。