Oracle 11g笔记——聚簇

来源:互联网 发布:工作淘宝客服怎么样 编辑:程序博客网 时间:2024/06/05 20:25

一、聚簇
1、含义
   聚簇就表的一种特殊的结构。一个聚簇由多个表组成,几个表共享相同的数据块。一个聚簇有一个或多个公共的列。
   Oracle把多个表的数据物理地存储在一起,以加速表的连接。如把部门表与员工表放在一个聚簇里。
   创建聚簇后,才能在聚簇中创建表,这些表叫聚簇表。在往聚簇表插入数据之前,必须在聚簇上创建索引。
   聚簇使用范围:
   (1)建立聚簇表的目的是为了查询,不是为了修改,频繁修改的表不适合创建成聚簇表。
   (2)查询时,常常对聚簇中的多个表进行连接。

2、示例
   (1)创建聚簇
        SQL>create cluster emp_dept(deptno int) tablespace users;
        emp_dept为聚簇的名字,deptno为聚簇关键字,聚簇中的所有聚簇表共享这一列。

   (2)创建聚簇表,实质为把表加入到聚簇中。在创建聚簇表之前,必须创建好聚簇。
        若想把数据插入至聚簇表中,必须在聚簇上创建索引。       

        创建聚簇表employee
        SQL>create table employee(
            empno int primary key,
            ename varchar2(20) not null,
            deptno int)
            cluster emp_dept(deptno);
      
        创建聚簇表department
        SQL>create table department(
            deptno int primary key,
            name varchar2(40) not null,
            location varchar2(40))
            cluster emp_dept(deptno);
       
        注:cluster emp_dept(deptno)为已建立的聚簇
 
        创建聚簇索引:
        SQL>create index ind_emp_dept on cluster emp_dept tablespace bigtbs_01;

   (3)删除聚簇表
        若聚簇中包含聚簇表,则必须包含子句including tables
        删除聚簇(聚簇是空的,无聚簇表)
        SQL>drop cluster emp_dept;
        删除聚簇(聚簇是空的,有聚簇表)
        SQL>drop cluster emp_dept including tables;

   (4)查询表属于哪个聚簇
        SQL>select owner,table_name,cluster_name
            from dba_tables
            where owner='test' and (table_name='DEPT' or table_name='EMP');

 

0 0
原创粉丝点击