2、不要用IN,用EXITS :
update y set y.zt=(select c.zt from c where c.NO=y.NO) where exits (select 1 from t where t.NO = y.NO );
效率會比用IN的語句高。如果例子中C表和T表是同壹個表,建議增加篩選之更新那些ZT字段不相同的數據,這樣會提高壹些效率。
3、使用遊標分批次的修改數據,因為壹個UPDATE更新的數據量過大,會導致大量的回滾段占用,分批次更新可以更好的利用資源。而且可以控制在壹次更新中斷後從中斷的位置繼續向下更新。避免更新失敗等問題發生;
4、使用臨時表,把需要更新的數據篩選出來,再編寫更新語句,這只是3或者4的壹種變化而已。看個人習慣,這麽做的優點是可以把臨時表的數據作為壹個備份,避免以後數據變化後無法得知當初的更新結果。