Oracle多插入语句
发布时间:2020-12-12 16:23:51 所属栏目:百科 来源:网络整理
导读:在我的应用程序中,我必须添加许多记录.我使用以下构造: INSERT /*+ append parallel(t1,4) parallel(t2,4) */ ALL INTO t1 (col1,col2,col3) VALUES ('val1_1','val1_2','val1_3') INTO t2 (col1,col3) VALUES ('val2_1','val2_2','val2_3') INTO t2 (col1,
在我的应用程序中,我必须添加许多记录.我使用以下构造:
INSERT /*+ append parallel(t1,4) parallel(t2,4) */ ALL INTO t1 (col1,col2,col3) VALUES ('val1_1','val1_2','val1_3') INTO t2 (col1,col3) VALUES ('val2_1','val2_2','val2_3') INTO t2 (col1,col3) VALUES ('val3_1','val3_2','val3_3') . . . SELECT 1 FROM DUAL; 我也在使用APPEND和PARALLEL提示.请注意,我在两个不同的表中插入数据.似乎并行被忽略了(DBA告诉我).那我怎么知道它是否被使用?是否可以在此类构造中使用PARALLEL提示?有效吗? 这可能足以使它工作:alter session enable parallel dml; 您可以使用以下查询检查实际的并行度: select px_servers_executions,v$sql.* from v$sql where lower(sql_text) like '%insert%parallel%' order by last_load_time desc; 如果你仍然没有得到并行性,那么有很多可能的原因.首先,看看这些参数: select * from v$parameter where name like 'parallel%' 但是您可能不希望insert语句具有并行性.并行性具有大量开销,并且通常仅在处理数千或数百万条记录时才有用. 我猜你真正的问题是解析大型SQL语句的时间.多表插页特别糟糕.如果您尝试插入超过几百行,则查询将花费很多秒来进行解析.根据您的Oracle版本,如果您尝试使用501表,它将永远挂起.运行几个较小的查询而不是一个大查询要快得多.例如,100行的5个插入将比500行的一个插入快得多. (一般来说,这与Oracle的性能调整完全相反.这是一种特殊情况,因为与解析大型SQL语句有关的错误.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |