ORACLE 大数据批量更新 MERGE INTO 代替 UPDATE/INSERT INTO 提升性能
2018-01-03 14:57
1296 查看
最近写存过的时候,从备份表中更新字段到正式表中,使用 UPDATE 批量更新大量的数据,会出现效率低下,有时候甚至卡死的情况,后面通过使用 MERGE INTO 代替 UPDATE 执行批量更新,会提升执行效率。
MERGE INTO语法如下:
举个简单的例子:
为什么会提升性能呢?
因为 UPDATE 关联子查询写法,是选到一条做一次子查询,这种写法得更新少,走好的索引才行,MERGE 写法是执行完 ON 后一次性更新,效率会好点。
MERGE INTO语法如下:
MERGE INTO table_name alias1 USING (table|view|sub_query) alias2 ON (join condition) WHEN MATCHED THEN UPDATE table_name SET col1 = col_val1, col2 = col2_val WHEN NOT MATCHED THEN INSERT (column_list) VALUES (column_values);
举个简单的例子:
MERGE INTO TEST_MERGE_INTO T1 USING TEST_MERGE_INTO_DETAIL T2 ON (T1.ID = T2.ID) WHEN MATCHED THEN UPDATE SET ITEM_NAME = T2.ITEM_NAME WHEN NOT MATCHED THEN INSERT (ID, ITEM_NO, ITEM_NAME) VALUES (1, '031', 'api'); COMMIT;
为什么会提升性能呢?
因为 UPDATE 关联子查询写法,是选到一条做一次子查询,这种写法得更新少,走好的索引才行,MERGE 写法是执行完 ON 后一次性更新,效率会好点。
相关文章推荐
- SQL之merge into 批量更新数据 sql数据同步 基于源表对目标表做Insert,Update,Delete操作
- SQL之merge into 批量更新数据 Merge关键字是一个神奇的DML关键字。它在SQL Server 2008被引入,它能将Insert,Update,Delete简单的并为一句。M
- sql server merge into 与update 批量更新1 百万测试数据的性能比较
- MySql中4种批量更新的方法update table2,table1,批量更新用insert into ...on duplicate key update, 慎用replace into.
- 《oracle每天一练》Merge Into 语句代替Insert/Update在Oracle中的应用实战
- Merge Into 语句代替Insert/Update在Oracle中的应用
- Merge Into 语句代替Insert/Update在Oracle中的应用实战
- MySql中4种批量更新的方法update table2,table1,批量更新用insert into ...on duplicate key update, 慎用replace into.
- Oracle实现数据不存在则插入,数据存在则更新(insert or update)
- Oracle Merge into(代替Insert/Update在Oracle中的应用)示例
- Merge Into 语句代替Insert/Update在Oracle中的应用实战
- Oracle:数据操作语句 (DML-insert into,update,delete) 部分、事务控制 (TCL-commit,rollback)
- Merge Into 语句代替Insert/Update在Oracle中的应用实战
- Oracle实现数据不存在则插入,数据存在则更新(insert or update)
- Merge Into 语句代替Insert/Update在Oracle中的应用实战
- Merge Into 语句代替Insert/Update在Oracle中的应用实战
- 批量更新数据(batches update )插入数据(batches insert)
- Merge Into 语句代替Insert/Update在Oracle中的应用实战
- .net中利用oracle产品自带的数据访问组件(Oracle.DataAccess.dll)提升批量更新操作的执行效率
- Merge Into 语句代替Insert/Update在Oracle中的应用实战