gpt4 book ai didi

mysql - NOLOGGING 不起作用

转载 作者:行者123 更新时间:2023-11-29 12:08:28 28 4
gpt4 key购买 nike

这是我的代码的一部分。一切正常,没有错误。但我有数百万行要插入。我在互联网上搜索了更快完成工作的方法。

我发现,使用 nologgin 和 +append 在表中插入,但不起作用。即使我使用 nologging 和追加,在表中插入相同行的时间也是相同的。

    create or replace procedure read_files(input varchar2, extensie varchar2) as  
........................................
Loop
BEGIN
..............................
UTL_FILE.GET_line(F1,V1);
insert /*+ append */ into alarms(alarm_id,property_name,property_value)
=values(alarm_counter,f_property_name,f_property_value) ;

End loop;
end;


alter table alarms nologging;
execute read_files('occ','cap');
alter table alarms logging;

我的工作步骤:

  • 首先编译程序
  • 更改表不记录
  • 执行程序

我的错误在哪里?

最佳答案

APPEND 提示仅适用于 INSERT .. SELECT 语句。 APPEND_VALUES暗示 适用于 INSERT .. VALUES 语句。

直接路径插入有一些要求和限制。在尝试 APPEND_VALUES 提示之前,最好先尝试 FORALL。它增加了额外的步骤,但减少了 SQL 和 PL/SQL 之间的上下文切换,这可能会显着提高性能。

declare
type alarm_counter_nt is table of number;
type f_property_name_nt is table of varchar2(100);
type f_property_value_nt is table of varchar2(100);
alarm_counters alarm_counter_nt := alarm_counter_nt();
property_names f_property_name_nt := f_property_name_nt();
property_values f_property_value_nt := f_property_value_nt();
begin
--Get values.
loop
utl_file_get_line(f1, v1);
alarm_counters.extend;
alarm_counters(alarm_counters.count) := ?;
f_property_names.extend;
f_proprety_names(f_property_names.count) := ?;
f_property_values.extend;
f_property_values(f_property_values.count) := ?;
end loop;

--Insert values.
forall i in 1 .. alarm_counters.count
insert into alarms(alarm_id,property_name,property_value)
values(alarm_counters(i),f_property_names(i),f_property_values(i)) ;

commit;
end;
/

关于mysql - NOLOGGING 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31087446/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com