【发布时间】:2014-04-04 06:36:23
【问题描述】:
我正在学习 PL/SQL 并编写了一个 PL/SQL 块,我将其粘贴在下面。 该块按预期运行,但完成该过程需要大量时间。 要检查我在两个表中运行了 10 条记录,需要 4 分钟。 之后,我尝试在大量数据上运行它,即使 5 小时后它也没有完成。 谁能指导我这里有什么问题以及如何提高性能。下面是我的 PL/SQL 块。
编辑:在 client_trans_vk1 中的 client_id 上没有为更新查询创建索引。这是罪魁祸首吗?
DECLARE
v_client_id test_vk.client_id%TYPE;
v_trans_amount account_bal.Bal_Am%TYPE;
cursor c_client
is select client_id,TRANS_AM as transaction_amount from test_vk;
begin
OPEN c_client;
LOOP
FETCH c_client INTO v_client_id,v_trans_amount;
BEGIN
EXIT WHEN c_client%NOTFOUND;
update client_trans_vk1 ca
set ca.bal_amt = 0, ca.additional_AM = (ca.additional_AM + v_trans_amount)
where ca.client_id = v_client_id;
commit;
END;
end LOOP;
CLOSE c_client
end;
【问题讨论】: