ITPub博客

首页 > 数据库 > Oracle > 为了感谢大家对我的支持,我现在将我整理的FAQ第二版for oracle共享出来。

为了感谢大家对我的支持,我现在将我整理的FAQ第二版for oracle共享出来。

原创 Oracle 作者:gugu99 时间:2007-11-30 15:23:16 0 删除 编辑
为了感谢大家对我的支持,我现在将我整理的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/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 关于checkpoint
请登录后发表评论 登录
全部评论
  • 博文量
    3121
  • 访问量
    2644006