我对Oracle有疑问。
我知道Oracle仅支持在第一个子查询级别使用别名。当我想在更新表时多次分组时,这会产生问题。
示例:我有一些服务器组和一个包含有关它们的信息的数据库。我有一个表,其中包含有关组的信息和一个表,其中我存储了时间戳(确切地说:我实际上使用了日期)组中特定服务器的工作负载。
现在,我在服务器表中遇到了一个非规范化字段的性能问题,该字段包含该组在一天内具有的最高工作负载。
我想做的是像
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表的外键引用。到目前为止我使用的解决方案是将第一个连接写入临时表,并在下一个语句中从该临时表进行更新。有更好的方法吗?
在这个问题上它还没有这样的问题,但是如果使用临时表增加数据量不仅花费了一些时间,而且还花费了大量的RAM。
感谢您的回答!