绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
《专家编程》第六章中散列聚簇表使用问题
2020-06-26 16:01:33
《专家编程》第六章中散列聚簇表有一个例子,建立有50000行的散列聚簇表一个,再建立内容相同的普通表一个,然后分别进行查询,观察KPROF报告中二者的结果。散列聚簇表的确如书上所说,I/O比普通表少了很多,CPU时间和elapsed时间比普通表多一点。但我又打开set timing on对比一下速度,发现散列聚簇表要00: 00: 01.05,而普通表则为00: 00: 00.09,相比之下普通表完成速度快了很多,这是怎么会事? 环境Win2000 + Oracle 9i 1.0.1我的步骤如下: 1. create cluster hash_cluster(hash_key number) hashkeys 50000 size 45; 2. create table emp cluster hash_cluster(empno) as select rownum empno,ename,job,mgr,hiredate,sal,comm,deptno from scott.emp where 1=0; 3.(将scott.emp中的记录均云的重复多遍插入emp中) declare l_cnt number; l_empno number default 1; begin select count(*) into l_cnt from scott.emp; for x in ( select * from scott.emp ) loop for i in 1..trunc(50000/l_cnt)+1 loop insert into emp values(l_empno,x.ename,x.job,x.mgr,x.hiredate,x.sal,x.comm,x.deptno); l_empno:=l_empno+1; end loop; end loop; commit; end; / 4. create table emp_reg as select * from emp; 5. alter table emp_reg add constraint emp_pk primary key(empno); 6. create table random(x int); 7. begin for i in 1..100000 loop insert into random values(mod(abs(dbms_random.random),50000)+1); end loop; end; / 8.开始测试 alter session set sql_trace=true; select count(ename) from emp,random where emp.empno=random.x; select count(ename) from emp_reg,random where emp_reg.empno=random.x;
分享好友

分享这个小栈给你的朋友们,一起进步吧。

调试数据库 ---- 源码研究方法论
创建时间:2020-06-16 17:28:11
能让你坚持下去的源码学习方法 ---- 调试数据库。Oracle的各种DUMP、Trace和Event,增加了研究这个数据库的“乐趣”,使用Oracle成为一个可研究的数据库。开源数据库当然也可以通过钻研源码的方式去研究,但这样的学习周期太长。本课程教你用调试技术不断为MySQL/PostgreSQL扩展功能,在学习源码的同时,不断开发自己的、类似Oracle DUMP、Trace、Event的小工具,这就是我所说的“正向反馈”。用正向反馈,激励自己坚持下去,终成功。
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

栈主、嘉宾

查看更多
  • vage
    栈主

小栈成员

查看更多
  • 叶子,你好
  • 小雨滴
  • 潘佳伟
  • 东风快递
戳我,来吐槽~