Oracle Pro * C批量使用主机阵列合并C中的记录会降低性能并增加卷

时间:2017-02-10 19:29:25

标签: sql oracle oracle11g oracle-pro-c sql-merge

在C中使用Oracle 11g Pro * C,我使用主机阵列来管理批量合并到DB表中,如下例所示:

merge into TBL_NM A 
using (select 1 from dual) B 
on (col1 = to_date(:v,'YYMMDD') and col2 = :v and col3 = :v and col4 = :v) 
when matched then 
update set col5 = :v, col2 = col2+ :v, col3 = col3 + :v 
when not matched then  
insert (col1, col2, col3, col4, col5, col6, col7, col8) 
values (to_date(:v,'YYMMDD'),:v,:v,:v,:v,:v,:v,:v)

我的第一个问题是:这种批量合并方式是否优于先运行查询获取rowid然后如果找不到,则插入并更新。我在这里找到了讨论: Oracle Merge vs Select then Insert or Update并且认为合并比查询更好,然后插入或更新。

我的第二个问题是,当音量增加时,我观察到性能下降。与具有较低数据量的DB相比,与较高的卷合并需要更多时间。是否可以通过微调来提高性能,而不是通过增加音量来降低性能?

在Pro * C边界内有哪些改进的可能性?

http://www.dba-oracle.com/t_append_upsert_merge_sql.htm,似乎使用APPEND提示与MERGE(upsert)SQL会更好吗?请分享您的观点。

0 个答案:

没有答案