rowid for update

本文讨论了在Oracle数据库中使用ROWID进行高效数据更新的方法,通过ROWID定位记录,利用FORALLUPDATE批量更新,减少锁表操作,提高查询更新性能。重点介绍了ROWID在复杂并行查询中的应用,以及在CURSOR中的使用注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有同事告诉我select ... for update不如select a.*,a.rowid from t,因为前者可能会造成锁表,后者不会锁表;

 

1. 在ORACLE中用ROWID来定位记录是最快的,比索引还快,所以如果先用SELECT ROWID选出要更新的行,放入COLLECTION中,再用 FORALL UPDATE 来批量更新可以提高速度。从这点来讲是比其他方法好一点

2. SELECT FOR UPDATE在更新前会锁定记录,这在复杂的并行查询更新程序中是必要的,比如要求数据一致性,在过滤数据时不允许他人改动数据,会用FOR UPDATE或SET TRANSACTION READ ONLY来加锁。另外像 CURSOR里的WHERE CURRENT OF CURSOR语句要求SELECT中必须加FOR UPDATE.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值