我有一个没有pk的表,我需要更新一个特定记录的导入,其他的总和从某个条件导入同一个表。
尝试解释一下。
我有表X,列ID和IMP(这是我需要更新的导入)。所以我试图用ID = 5的记录的IMP值更新其他IMPORT的总和,其中记录id是< 5。
UPDATE X old
SET old.IMP =
(SELECT SUM(new.IMP)
FROM X new
WHERE new.ID<5)
WHERE old.ID = 5;
但更新需要很长时间。我甚至不知道它是否完成了,因为它耗费了太多而且我已经中止了剧本。
我做错了吗?
修改
呀。你问我适当的情况。在桌子上工作真的很小,有大约2000条记录。当然没有索引。我仍然不知道为什么需要这么多。如果我只是运行脚本来获取SUM,它需要一些ms,但是有了更新,它似乎会陷入我不理解的东西。
编辑2
计算机的第一条规则:重新启动。这就是一切重新开始工作的方式。不知道发生了什么,但只是重启机器,现在脚本正常工作。对不起任何麻烦。
答案 0 :(得分:0)
运行这些查询并共享输出:
select sum(bytes)/1024/1024 from dba_segments where segment_name = 'X';
select owner, index_name, column_name from dba_ind_columns where table_name = 'X';
select count(1) from X;
如果您有权访问OEM,则可以监视sql语句,以查看查询是否有进度或阻止程序。