聚簇
所谓聚簇(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;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!