Chinaunix首页 | 论坛 | 博客
  • 博客访问: 393515
  • 博文数量: 273
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1430
  • 用 户 组: 普通用户
  • 注册时间: 2018-02-02 15:57
文章分类

全部博文(273)

文章存档

2018年(273)

我的朋友

分类: Oracle

2018-08-14 13:49:35

      平时写SQL遇到多表关联的情况经常见到,这也是关系型数据库最大的优势之一。表连接类型可以分为Nested Loops join、hash join、Merge Sort Join三类。每一类都有各自的使用场景,sql语句在数据库中生成执行计划,数据库中优化器会根据代价去判断选择哪种方式。Merge Sort Join 的表访问次数和 Hash Join 是类似的。下面测试Nested Loop、Hash join这两种方式执行时对于表的访问次数。

1、构造测试环境

①创建表test1、test2

SYS@vbox66in>create table test1 ( 2 id number not null, 3 num number, 4 val varchar2(100));

表已创建。

SYS@vbox66in>
SYS@vbox66in>create table test2 ( 2 id number not null, 3 t1_id number not null, 4 num number, 5 val varchar2(100));

表已创建。

SYS@vbox66in> 

②插入数据

SYS@vbox66in>exec dbms_random.seed(0);

PL/SQL 过程已成功完成。

SYS@vbox66in>insert into test1 2 select rownum,rownum,dbms_random.string('a',50) from dual 3 connect by level <= 100 4 order by dbms_random.random;

已创建 100 行。

SYS@vbox66in>
SYS@vbox66in>insert into test2 2 select rownum,rownum,rownum,dbms_random.string('a',50) from dual 3 connect by level <= 10000 4 order by dbms_random.random;

已创建 10000 行。

SYS@vbox66in>commit;

提交完成。

SYS@vbox66in> 

2、表访问次数测试


阅读(1274) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~