sql运行时间过长。

我现在要更新一张表里的数据。
这张表的省市错误。
我现在要把其中的错误数据进行修复。
丛根据市在字典表中获得正确的省进行赋值。
但是现在直接执行十分钟,没完了。
因为这张表很大,字典表更大。
我一开始用临时表,临时表得到了一千条的主键。
然后我根据这些有问题的主键更新,但是依旧死了。
请问我该怎么办呢?
我想把这些数据分次更新,但是sql中能写循环么?

循环可以用游标,但是会影响允许效率