聚簇

聚簇

所谓聚簇(cluster),形象的说,就是生长在一起的表。聚簇包括一张或多张表,表的公共列被称为聚簇关键字,在公共列上具有同一值的列物理存储在一起。那么在什么情况下需要创建聚簇呢?通常在多个表有共同的列时,应使用聚簇。比如一张学生基本情况表,其中包含学生的学号,姓名,性别,住址等信息。另外,还涉及了一张学生成绩表,其中包含了学生成绩,也包含学生的学号,姓名,性别。那么这两张表共同列就可以创建聚簇。这样两张表的共同的学号、姓名、和性别、就存放在了一起,相同的值只存放了一次。如果两个表通过聚簇进行联合,则会打打提高查询的速度,但对于插入等操作则会降低效率

创建聚簇

创建聚簇后,要创建使用聚簇的表,对聚簇还应该建立索引。如果不对聚簇建立索引,则不能对聚簇表进行插入修改和删除操作。创建聚簇需要CREATE CLUSTER系统权限。语法如下:

    create cluster 聚簇名(列1[,列2[,列3...]])
size n
tablespace 表空间名;
列名是构成聚簇关键字的列集合。

SIZE指名存储所有含有相同聚簇关键字的行的平均存储空间数(聚簇逻辑块的大小)。

TABLESPACE定义聚簇使用的表空间。

删除聚簇使用如下语法:

drop cluster 聚簇名 [including tables [cascade constraints]];

其中:

INCLUDING TABLES表示一同删除聚簇表。如果不指明此选项,则必须手工删除聚簇表后才能删除聚簇本身。

cascade constraints 表示删除聚簇表时,一起删除同其他表之间的约束关系。

eg:创建聚emp的簇对象
--
create cluster clu_emp(empno number2(20),enmname(20),sex varchar2(4))
size 400
tablespace myemp;
--创建相关的第一张聚簇表emp
create table emp(empno varchar2(20) unique,
                ename varchar2(20),
                sex   varchar2(4),
                email varchar2(40),
                address varchar2(40))
                cluster clu_emp(empno,enmname,sex);
--创建相关表sal
create table sal(empno varchar2(20) unique,
                ename varchar2(20),
                sex   varchar2(4),
                deptno varchar2(20),
                sal   number(14,2)
              )
              cluter clu_emp(empno,enmname,sex);
---创建聚簇索引
create index ind_cluenpno on cluter clu_emp;
---插入数据
insert into emp values('1','张三','男','12@op.com','东大街');
insert into emp values('2','李四','男','13@op.com','西大街');
insert into emp values('3','王五','男','14@op.com','北大街');
insert into sal values('1','张三','男','20',3000);
insert into sal values('2','李四','男','20',4000);
insert into sal values('3','王五','男','20',4000);
---数据都能插入,只是公共列都存入聚簇中;

--删除聚簇,该例删除聚簇,包括相关表以及约束
drop cluter clu_emp including tables cascade constraints;
 

 

posted @   翻滚的小井蛙  阅读(54)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示