zoukankan      html  css  js  c++  java
  • PLSQL_Oracle簇表和簇表管理Index clustered tables(案例)

    2012-06-08 Created By BaoXinjian

    一、摘要


    簇表是Oracle中一种可选、的存储表数据的方法。使用簇表可以减少磁盘I/O,改善访问簇表的联结所带来的资源开销,本文讲述了簇表的原理、创建以及管理簇表等。

    1.簇表

    由共享相同数据块的一组表组成。在堆表的管理过程中,对于某些表的某些列和另外的表的某些列经常被用来联结使用,可以将这些表的联结列作为共享的公共列而将这些表组合在一起。

    这就是簇表形成的原因。例如,scott模式中,有emp表,dept表,两个表经常使用 deptno列来进行联结,

    为此,我们共享deptno列,将emp和dept表组成簇表。组成簇表后,Oracle物理上将emp和dept表中有关每个部门所有行存储到相同的数据块中。

    簇表不能等同于SQL server中的簇索引,两者并不是一回事。

    SQL server中的簇索引是使得行的存储按索引键来存储,类似于IOT表。

    2.簇键

    簇键是列或多列的组合,为簇表所共有

    在创建簇时指定簇键的列,以后在创建增加的簇中的每个表时,指定相同的列即可

    每个簇键值在簇和簇索引中仅仅存储一次,与不同表中有有多少这样的行无关

    3.使用簇表的好处。

    减少磁盘I/O,减少了因使用联结所带来的系统开销

    节省了磁盘存储空间,因为原来需要单独存放多张表,现在可以将联结的部分作为共享列的存储。

    4.何时创建簇表

    对于经常查询、当DML较少的表

    表中的记录经常使用到联结查询

    5.创建簇表的步骤

    创建簇

    创建簇索引

    创建簇表

    6.创建簇、簇键、簇表时考虑的问题

    哪些表适用于创建簇

    对于创建簇的表哪些列用作簇列

    创建簇时数据块空间如何使用(pctfree,pctused)

    平均簇键及相关行所需的空间大小

    簇索引的位置(比如存放到不同的表空间)

    预估簇的大小

    二、解析


     

    create cluster emp_dept_cluster(deptno number(2))
    pctused 80
    pctfree 15
    size 1024
    tablespace users; 
    create index emp_dept_cluster_idx
    on cluster emp_dept_cluster;
    create table dept
    (deptno number(2) primary key,
     dname varchar2(14),
     loc   varchar2(13)
    ) 
    cluster emp_dept_cluster(deptno);   --使用了cluster关键字后面跟簇名、簇列
    create table emp
    (empno number primary key,
     ename varchar2(10),
     job varchar2(9),
     mgr number,
     hiredate date,
     sal number,
     comm number,
     deptno number(2) references dept(deptno)
    )
    cluster emp_dept_cluster(deptno);  --使用了cluster关键字后面跟簇名、簇列

    select object_name,object_type,status from user_objects order by object_name ;

    begin
    for x in ( select * from scott.dept )
    loop
      insert into dept
        values ( x.deptno, x.dname, x.loc );
      insert into emp
        select * from scott.emp
       where deptno = x.deptno;
    end loop;
    end;
    /

    Thanks and Regards

    转载 乐沙弥 - http://blog.csdn.net/leshami/article/details/5925501

  • 相关阅读:
    毕设进度21
    毕设进度20
    Javascript高级程序设计第三版-笔记
    前端踩过的坑
    thinkphp笔记
    PHP 发邮件《转》
    smarty笔记
    jquery笔记
    JS笔记
    php万年历
  • 原文地址:https://www.cnblogs.com/eastsea/p/3938270.html
Copyright © 2011-2022 走看看