0

这是我的更新声明:

Update childtbl C 
    set C.chldFld=Select P.ParentFld 
                  from ParentTbl P 
                  where P.ID=C.ID

更新需要几个小时。

父表和子表都有索引。

4

3 回答 3

0

1)检查您是否有未提交的交易。

2) childtbl 中有多少条记录?ParentTbl 中有多少人?ParentTbl.ID 上是否有索引?

ParentTbl.ID 上的索引将帮助您找到加速更新的正确记录。

3) childtbl.chldFld 上是否有索引?有多少索引使用 chldFld?

在 cldFld 上有索引会减慢更新速度。

子表中的记录太多(百万)会导致更新需要很长时间。

于 2013-10-17T15:15:45.513 回答
0

首先检查表上的任何锁定和阻塞。检查使用的索引以及它们是否写得不好。希望您可以发布结果,以便我们可以更好地处理它。

于 2013-10-19T16:38:08.223 回答
0

如果您在表之间有外键关系,您可以更新连接的两个表的键保留视图。

一般模式是:

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;

这为优化器提供了更多有效连接两个表的选择(例如散列连接)。

于 2013-10-17T16:01:54.987 回答