表2 3000条记录测试结果
测试次数
使用cursor方式(TD)
使用PL/SQL方式(WCDMA)
1
3"
0"
2
2"
0"
3
2"
0"
4
2"
0"
5
2"
0"
平均
2.2”
0”
表3 9000条记录测试结果
测试次数
使用cursor方式(TD)
使用PL/SQL方式(WCDMA)
1
0"
0"
2
14"
1"
3
9"
0"
4
13"
1"
5
10"
0"
平均
9.2”
0.4”
根据测试结果可以看出的确用存储过程在大数据量时是极其有优势的,特别是在大数据量的情况下,并且存储过程的性能极其稳定,cursor方式由于时间长,感觉受网络状况影响较大,时间长短不定。可以得出结论使用储存过程将18倍的提高数据查询读取速度。
1.3 部分测试代码
1.3.1 测试表脚本:
创建用于查询的表
drop table tb_boardt;
create table tb_boardt(
BYBOARDTYPE NUMBER(3),
ABYBOARDNAME VARCHAR2(15)
) tablespace cm_space;
用储存过程向表中插入需要查询的120000记录:)
declare
i integer :=0;
begin
for i in 1..20000 loop
insert into tb_boardt values(1,%27Allen_BOARD%27);
insert into tb_boardt values(2,%27LILY_BOARD%27);
insert into tb_boardt values(4,%27LIL_BOARD%27);
insert into tb_boardt values(5,%27ALLEN_BOARD%27);
insert into tb_boardt values(6,%27BEMC_BOARD%27);
insert into tb_boardt values(7,%27TWIM_BOARD%27);
commit;
end loop;
end;
用于读取记录的存储过程包头
create or replace package testEptTbl as
type charArrayType is table of varchar2(2048)
index by binary_integer;
type lcharArrayType is table of varchar2(2048)
index by binary_integer;
type numArrayType is table of int
index by binary_integer;
num INTEGER;
m_RncID INTEGER;
procedure get_R0BrdLib(
batch_size in integer,
found in out integer,
done_fetch out integer,
BoardType1 out numArrayType,/*单板类型Board Type*/
BoardName1 out charArrayType/*各子单元类型包含的子单元个数Sunit Number Per Type*/);
end testEptTbl;
/
show err
用于记录的存储过程包体
create or replace package body testEptTbl as
/* 3 */
cursor CUR_R0BrdLib is
SELECT BYBOARDTYPE,ABYBOARDNAME FROM tb_boardt;
文章来源于领测软件测试网 https://www.ltesting.net/