设为首页 加入收藏

TOP

【oracle11g,17】存储结构:段的类型,数据块(行连接、行迁移,块头),段的管理方式,高水位线(三)
2015-07-24 11:00:51 来源: 作者: 【 】 浏览:6
Tags:oracle11g 存储 结构 段的 类型 数据 连接 迁移 块头 管理 方式 水位
85
--------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | --------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 14 | 952 | 7 (15)| 00:00:01 | |* 1 | HASH JOIN | | 14 | 952 | 7 (15)| 00:00:01 | | 2 | TABLE ACCESS FULL| DEPT | 4 | 88 | 3 (0)| 00:00:01 | | 3 | TABLE ACCESS FULL| EMP | 14 | 644 | 3 (0)| 00:00:01 | ---------------------------------------------------------------------------

#创建簇键 SQL> CREATE CLUSTER emp_dept (deptno NUMBER(3)) 2 SIZE 600 3 TABLESPACE users;
Cluster created. #创建簇表 先创建dept,然后再创建emp表。否则报错。 SQL> create table dept( 2 DEPTNO NUMBER(3) primary key, 3 DNAME VARCHAR2(14), 4 LOC VARCHAR2(13) 5 ) CLUSTER emp_dept (deptno);
Table created. #创建簇表 SQL> create table emp( 2 EMPNO NUMBER(4) primary key, 3 ENAME VARCHAR2(10), 4 JOB VARCHAR2(9), 5 MGR NUMBER(4), 6 HIREDATE DATE, 7 SAL NUMBER(7,2), 8 COMM NUMBER(7,2), 9 DEPTNO NUMBER(3) references dept(deptno) 10 ) CLUSTER emp_dept (deptno);
Table created. #创建簇索引 SQL> CREATE INDEX emp_dept_index 2 ON CLUSTER emp_dept 3 TABLESPACE users;
Index created. #插入数据 SQL> insert into dept select * from scott.dept;
4 rows created.
SQL> insert into emp select * from scott.emp;
14 rows created.
SQL> commit;
Commit complete. #查询两个表的rowid,rowid的前15位相同说明在同一个数据块中。 SQL> select e.rowid,d.rowid from emp e,dept d where e.deptno=d.deptno;
ROWID ROWID ------------------ ------------------ AAACgFAAEAAAACVAAA AAACgFAAEAAAACVAAB AAACgFAAEAAAACVAAB AAACgFAAEAAAACVAAC AAACgFAAEAAAACVAAC AAACgFAAEAAAACVAAC AAACgFAAEAAAACVAAD AAACgFAAEAAAACVAAB AAACgFAAEAAAACVAAE AAACgFAAEAAAACVAAC AAACgFAAEAAAACVAAF AAACgFAAEAAAACVAAC AAACgFAAEAAAACVAAG AAACgFAAEAAAACVAAA AAACgFAAEAAAACVAAH AAACgFAAEAAAACVAAB AAACgFAAEAAAACVAAI AAACgFAAEAAAACVAAA AAACgFAAEAAAACVAAJ AAACgFAAEAAAACVAAC AAACgFAAEAAAACVAAK AAACgFAAEAAAACVAAB
ROWID ROWID ------------------ ------------------ AAACgFAAEAAAACVAAL AAACgFAAEAAAACVAAC AAACgFAAEAAAACVAAM AAACgFAAEAAAACVAAB AAACgFAAEAAAACVAAN AAACgFAAEAAAACVAAA
14 rows selected.
#扫描方式发生变化 SQL> select e.empno,e.ename,e.sal,d.deptno,d.dname from emp e,dept d where e.deptno=d.deptno;
14 rows selected.

Execution Plan ---------------------------------------------------------- Plan hash value: 805422011
---------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | ---------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 14 | 952 | 6 (0)| 00:00:01 | | 1 | NESTED LOOPS | | 14 | 952 | 6 (0)| 00:00:01 | | 2 | TABLE ACCESS FULL | DEPT | 4 | 88 | 3 (0)| 00:00:01 | | 3 | TABLE ACCESS CLUSTER| EMP | 4 | 184 | 1 (0)| 00:00:01 | |* 4 | INDEX UNIQUE SCAN | EMP_DEPT_INDEX | 1 | | 0 (0)| 00:00:01 | ----------------------------------------------------------------------------------------

5.索引:
加快查询速度,索引第一次IO先访问树,到叶节点找到rowid,再通过rowid访问响应的记录。

6.索引组织表(IOT表):
可以将数据存放在索引的叶节点,不用再访问不同的段,iot表不能换查询条件,查询条件必须建成主键约束,如果换查询条件效率会很低。 iot表存储时根据主键排序进行存储,所以插入数据时,按顺序插入数据。 如果索引组织表中的数据放不下会把一些数据放到溢出表空间。 优点:只要io一次就能找到真实数据。 注意:生产中慎重使用。
例:将多对多的关系表创建索引组织表 SQL> create table students(stud_id number,fname varchar2(30),lname varchar2(30),constraint pk_student primary key(stud_id)); Table created.
SQL> create table classes(class_id number,cname varchar2(30),constraint pk_clas

首页 上一页 1 2 3 4 5 6 下一页 尾页 3/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Install Goldengate On Oracle Ra.. 下一篇Oracle实践--PL/SQL基础之触发器..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Java 并发工具类:提 (2025-12-25 20:25:44)
·Java面试技巧:如何 (2025-12-25 20:25:41)
·Java并发编程中的线 (2025-12-25 20:25:38)
·C 语言 - cppreferen (2025-12-25 19:50:27)
·《C 语言入门教程》 (2025-12-25 19:50:23)