oracle 游标测试,ORACLE数据库中关于游标和记录表的速度测试

1

、问题提出

在我们日常的数据库操作尤其是存储过程设计中,经常有记录表之类的集合、显示游标等操作,但这两种数据处理方式在速度及性能上有什么区别呢?

2

、测试方法

ORACLE

数据库中创建一个数据表,然后对创建的数据表分别插入

100

条、

1000

条、

10000

条、

100000

条数据,最后对这些数据分别用游标和记录表执行相同功能的操作

10

次,计算平均消耗的系统时间。

(

1

)创建数据表

create table  table_test

(

COL1  INTEGER,

COL2  VARCHAR2(20)

)

(

2

)插入数据(以

100000

条数据为例)

--

循环

100000

次添加

DECLARE

i     INTEGER;

BEGIN

FOR i IN 1..100000 LOOP

INSERT INTO TABLE_TEST(COL1,COL2)

VALUES(i,'ADD'||i);

END LOOP;

COMMIT;

EXCEPTION

WHEN OTHERS THEN

ROLLBACK;

END;

(

3

)游标操作

--

游标处理

DECLARE

v_COL1   TABLE_TEST.COL1%TYPE;

v_COL2   TABLE_TEST.COL2%TYPE;

v_BEGIN  INTEGER;

v_END    INTEGER;

CURSOR CUR_TYPE IS

SELECT COL1,COL2 from TABLE_TEST;

BEGIN

SELECT DBMS_UTILITY.get_time INTO v_BEGIN

from   DUAL;

DBMS_OUTPUT.put_line('

开始时间:

'||v_BEGIN);

IF CUR_TYPE%ISOPEN = FALSE then

OPEN CUR_TYPE;

END IF;

FETCH CUR_TYPE INTO v_COL1,v_COL2;

WHILE CUR_TYPE%FOUND

LOOP

FETCH CUR_TYPE INTO v_COL1,v_COL2;

END LOOP;

CLOSE CUR_TYPE;

SELECT DBMS_UTILITY.get_time INTO v_END

from   DUAL;

DBMS_OUTPUT.put_line('

结束时间:

'||v_END);

DBMS_OUTPUT.put_line('

开始时间

'||v_BEGIN||'

,结束时间

'||v_END||'

消耗时间

'||TO_CHAR(v_END-v_BEGIN));

DBMS_OUTPUT.put_line('

消耗时间:

'||TO_CHAR(v_END-v_BEGIN));

END;

(

4

)记录表操作

--

记录表处理

DECLARE

v_COL1&nbsp

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值