簡體   English   中英

Oracle-Update非常慢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM