这是我的更新声明:
Update childtbl C
set C.chldFld=Select P.ParentFld
from ParentTbl P
where P.ID=C.ID
更新需要花费数小时和数小时。
父表和子表都有索引。
答案 0 :(得分:0)
1)检查您是否有未经授权的交易。
2)childtbl中有多少条记录? ParentTbl中有多少个? ParentTbl.ID上有索引吗?
ParentTbl.ID上的索引将帮助您找到加速更新的正确记录。
3)childtbl.chldFld上有索引吗?有多少索引使用chldFld?
在cldFld上使用索引会降低更新速度。
子计划表中的记录太多(百万)将导致更新需要很长时间。
答案 1 :(得分: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;
这为优化器提供了更多选择,可以有效地连接两个表(例如,散列连接)。
答案 2 :(得分:0)
首先检查表格上的任何锁定和阻塞。 检查使用的索引以及它们是否写得不好。 希望你能发布结果,以便我们能更好地接受它。