後,我已經有了一個相對簡單的更新語句:更新緩慢截斷
update sv_konginfo ki
set AnzDarl = 1
where kong_nr in (
select kong_nr
from sv_darlehen
group by kong_nr
having count (*) = 1);
運行在它自己的好(約1秒約150.000記錄)。
但是,如果我截斷表,然後重新插入記錄:
truncate table sv_konginfo;
insert into sv_konginfo (kong_nr)
select distinct kong_nr
from sv_darlehen;
更新語句運行(超過一分鐘)非常緩慢的工作完全一樣的數據。
如何在第二種情況下提高性能? (我們使用Oracle數據庫10g企業版發佈10.2.0.3.0 - 64位)
在您可以說您已經改進了更新的性能之前,您需要確定是什麼導致它首先變慢。我將開始在truncate + insert之前和之後獲取執行計劃,並且我也想知道在truncate + insert之前和之後有多少行正在更新。例如,在插入之後,sv_konginfo中的行比在截斷之前有更多的行嗎? – 2010-01-07 12:46:21
感謝您的想法,但您提到的一點是爲什麼我對性能感到困惑:表中的數據和執行計劃完全相同! – Thorsten 2010-01-07 15:10:20