[英]Oracle-Update is very slow
這是我的更新聲明:
Update childtbl C
set C.chldFld=Select P.ParentFld
from ParentTbl P
where P.ID=C.ID
更新需要花費數小時的時間。
父表和子表都有索引。
1)檢查您是否有未提交的交易。
2)childtbl中有多少條記錄? ParentTbl中有多少? 在ParentTbl.ID上有索引嗎?
ParentTbl.ID上的索引將幫助您找到正確的記錄以加速更新。
3)childtbl.chldFld上有索引嗎? 多少索引使用chldFld?
在cldFld上建立索引會減慢更新速度。
子表中的記錄過多(百萬)將導致更新花費很長時間。
如果表之間具有外鍵關系,則可以在兩個表的鍵保留視圖上進行更新。
一般模式為:
Update (
select parent_table.key parent_key,
child_table.key child_key,
parent_table.value parent_value,
child_table.value child_value
from parent_table
join child_table on child_table.key = parent_table.key)
set
child_value = parent_value;
這為優化器提供了更多有效地連接兩個表的選擇(例如,哈希連接)。
首先檢查表上是否有鎖定和阻塞。 檢查使用的索引以及它們是否寫得不好。 希望您可以發布結果,以便我們更好地進行研究。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.