【发布时间】:2015-07-31 04:08:47
【问题描述】:
即使我的内部选择查询返回更多行(例如 25K),是否可以在 1000 条记录中提交更新/删除一次?
update sometable1
set somecolumn
where somewhere in (select somewhere from sometable2);
从字面上看,我想在更新 1000 行后提交...
【问题讨论】:
-
请使用哪个 RDBMS(SqlServer、MySql 等)?本机更新语句应该是原子的,这意味着所有记录将在完成后提交。您需要实施手动批处理 + 提交策略。
-
您使用的是哪个 DBMS?后格雷斯?甲骨文?但是你的提交应该由你的业务逻辑决定。
-
它的 Oracle 11G。此 SQL 不会与应用程序一起运行。需要这个来直接更新表格
-
然后运行它,最后提交。频繁提交几乎总是比最后一次提交慢。顺便说一句:如果
sometable2.somewhere可以包含null值,那么您的更新将无法按预期工作。 -
没有必要这样做。这就是 Oracle 不支持它的方式。单个原子会更快。忘记其他数据库上必需的模式。另外查询应该是
set somecolumn = somevalue;