为了感谢大家对我的支持,我现在将我整理的FAQ第二版for oracle共享出来。
一、SQL&PL SQL
怎么样大批量的更新数据而不影响正常业务1、化整为零
一般情况下,如果需要对一个表进行大批量的更新的时候,由于涉及到的记录数很多,所以可能需要花费的时间也就很长,这种情况下,还采用一个单独的update 语句来更新的话,就会造成长时间的加锁,影响到业务。
简单的一个例子,如要更新im_user表中的非空ID为用户表bmw_users中的ID,关联字段为im_user.login_id=bmw_users.nick,语句可以这样写
PHP code:
update im_user i set i.id=(select id from bmw_users u
where i.login_id=u.nick)
where i.id is not null;
.
这个语句可以更新到几百万记录,当然,耗费时间可能需要1小时以上,对于im_user这样被频繁更新的表来说,肯定是不现实的,所以,该语句可以改写为如下的PL/SQL块。[@more@]
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/10748419/viewspace-986927/
,如需转载,请注明出处,否则将追究法律责任。