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 
相关文档:
oracle表空间操作详解
1
2
3作者: 来源: 更新日期:2006-01-04
5
6
7建立表空间
8
9CREATE TABLESPACE data01
10DATAFILE '/ora ......
1. NLS_LANG
参数组成
NLS_LANG
参数由以下部分组成:
NLS_LANG
=<Language>_<Territory>.<Clients
Characterset>
NLS_LANG
各部分含义如下:
LANGUAGE指定:
-Oracle消息使用的语言
-日期中月份和日显示
TERRITORY指定
-货币和数字格式
-地区和计算星期及日期的习惯
CHARACTERSET:
-控 ......
exp/imp是Oracle自带的导入导出命令,运用它,即使不需要那结UI工具也能轻易的完成数据导出导入工作,下面是它们的参数:
EXP参数详解
使用的格式是:EXP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
其中USERID是必须的且为第一个参数
关键字
备注
USERID
用户名/口令
FULL
导出整个文件 (N)
BUFFER
......
oracle将字符串转换为12小时与24小时制:
--12小时制:
select hsv.mydate from huhai_seq_value hsv
where hsv.mydate = to_date('2009-03-03 00:00:00','yyyy-mm-dd hh:mi:ss');
--24小时制:
select hsv.mydate from huhai_seq_value hsv
where hsv.mydate = to_date('2009-03-03 00:00:00','yyyy-m ......
Oracle Flashback 技术总结
Flashback 技术是以Undo segment中的内容为基础的, 因此受限于UNDO_RETENTON参数。要使用flashback 的特性,必须启用自动撤销管理表空间。
在Oracle 10g中, Flash back家族分为以下成员: Flashback Database, Flashback Drop,Flashback Query(分Flashback Query,Flashback Version Query ......