--创建测试表
create table t_test
(
id number(10) not null,
code varchar2(10),
description varchar2(50)
);
--创建测试过程
Create Or Replace Procedure sp_test As
Type t_table Is Table Of t_test%Rowtype;
l_tab t_table := t_table();
l_start Number;
l_size Number := 1000000;
Begin
-- Populate collection.
For i In 1 .. l_size Loop
l_tab.extend;
l_tab(l_tab.last).id := i;
l_tab(l_tab.last).code := to_char(i);
l_tab(l_tab.last).description := 'Description: ' || to_char(i);
End Loop;
-- ----------------------------------------------------------------
-- Test 0: Time bulk inserts.
l_start := dbms_utility.get_time;
For i In l_tab.first .. l_tab.last Loop
Insert Into t_test Values l_tab (i);
End Loop;
dbms_output.put_line('Inserts : ' || (dbms_utility.get_time - l_start));
-- ----------------------------------------------------------------
-- ----------------------------------------------------------------
-- Test 1: Time bulk inserts.
l_start := dbms_utility.get_time;
Forall i In l_tab.first .. l_tab.last
Insert Into t_test Values l_tab (i);
dbms_output.put_line('Bulk Inserts : ' ||
(dbms_utility.get_time - l_start));
-- ----------------------------------------------------------------
-- ----------------------------------------------------------------
-- Test 2: Time bulk inserts using the APPEND_VALUES hint.
l_start := dbms_utility.get_time;
Forall i In l_tab.first .. l_tab.last
Insert /*+ APPEND_VALUES */
Into t_test
Values l_tab
(i);
dbms_output.put_line('Bulk Inserts /*+ APPEND_VALUES */ : ' ||
(dbms_utility.get_time - l_start));
-- ----------------------------------------------------------------
Commit;
Exception
When Others Then
dbms_output.put_line(dbms_utility.format_error_stack);
Raise;
End;
--清空表
truncate table t_test;
select count(1) from t_test;
--开始测试
begin
sp_test;
end;
--测试结果
Inserts : 3468
Bulk Inserts : 254
Bulk Inserts /*+ APPEND_VALUES */ : 230
oracle APPEND_VALUES
最新推荐文章于 2022-08-28 22:25:26 发布