oracle 聚簇 学习
来源:互联网 发布:新疆2016年6月4g网络 编辑:程序博客网 时间:2024/05/16 11:11
1. 什么是聚簇
聚簇是根据码值找到数据的物理存储位置,从而达到快速检索数据的目的。Oracle聚簇索引的顺序就是数据的物理存储顺序,叶节点就是数据节点。非聚簇索引的顺序与数据物理排列顺序无关,叶节点仍然是索引节点,只不过有一个指针指向对应的数据块。一个表最多只能有一个聚簇索引。内容来自XunPeng.Net
2. 使用 Oracle聚簇索引 寻
聚簇是一种存储表的方法,这些表密切相关并经常一起连接进磁盘的同一区域。例如,表 BOOKSHELF 和BOOKSHELF_AUTHOR 数据行可以一起插入到称为簇(Cluster)的单个区域中,而不是将两个表放在磁盘上的不同扇区上。簇键(Cluster Key)可以是一列或多列,通过这些列可以将这些表在查询中连接起来(例如,BOOKSHELF表和BOOKSHELF_AUTHOR表中的 Title列)。为了将表聚集在一起,必须拥有这些将要聚集在一起的表。
下面是create cluster命令的基本格式:
create cluster (column datatype [, column datatype]...) [other options]; 寻朋网(XunPeng.Net)
cluster的名字遵循表命名约定,column datatype是将作为簇键使用的名字和数据类型。column的名字可以与将要放进该簇中的表的一个列名相同,或者为其他有效名字。下面是一个例子:
create cluster BOOKandAUTHOR (Col1 VARCHAR2(100)); 寻朋网(XunPeng.Net)
这样就建立了一个没有任何内容的簇(象给表分配了一块空间一样)。COL1的使用对于簇键是不相干的,不会再使用它。但是,它的定义应该与要增加的表的主键相符。接下来,建立包含在该簇中的表:
create table BOOKSHELF
(Title VARCHAR2(100) primary key,
Publisher VARCHAR2(20),
CategoryName VARCHAR2(20),
Rating VARCHAR2(2),
constraint CATFK foreign key (CategoryName) references CATEGORY(CategoryName)
)
cluster BOOKandAUTHOR(Title);
在向BOOKSHELF表中插入数据行之前,必须建立一个Oracle聚簇索引: 寻朋网(XunPeng.Net)
create index BOOKandAUTHORndx on cluster BOOKandAUTHOR;
在上面的create table语句中,簇BOOKandAUTHOR(Title)子句放在表的列清单的闭括号的后面。BOOKandAUTHOR是前面建立的聚簇的名字
create table BOOKSHELF_AUTHOR
(Title VARCHAR2(100),
AuthorName VARCHAR2(50),
constraint TitleFK Foreign key (Title) references BOOKSHELF(Title),
constraint AuthorNameFK Foreign key (AuthorName) references AUTHOR(AuthorName)
)
cluster BOOKandAUTHOR (Title);
当这两个表被聚在一起时,每个唯一的Title在簇中实际只存储一次。对于每个Title,都从这两个表中附加列。 寻朋网(XunPeng.Net)
来自这两个表的数据实际上存放在一个位置上,就好像簇是一个包含两个表中的所有数据的大表一样
3. 注意事项
4. 测试
create cluster object_id (Col1 VARCHAR2(100),Col2 int); CREATE TABLE T2012012601 ( OBJECT_NAME VARCHAR2(100), OBJECT_ID INT, RN INT)cluster object_id(OBJECT_NAME,RN); CREATE TABLE T2012012602 ( OBJECT_NAME VARCHAR2(100), OBJECT_ID INT, RN INT, owner varchar(100))cluster object_id(OBJECT_NAME,RN); create index cluster_idx_id on cluster object_id;insert /*+ APPEND NOLOGGING */ into T2012012601 select OBJECT_NAME,OBJECT_ID,rownum FROM all_objects;commit;insert /*+ APPEND NOLOGGING */ intoT2012012602 select OBJECT_NAME,OBJECT_ID,rownum,owner FROM all_objects;CREATE UNIQUE INDEX IDX_RN_2601 ON T2012012601(rn);
- oracle 聚簇 学习
- 【oracle学习】oracle安装
- [oracle学习] oracle 数据类型
- 【Oracle】Oracle基础学习
- 学习oracle-认识oracle
- oracle学习
- Oracle学习
- oracle 学习
- oracle学习
- ORACLE学习
- 学习Oracle
- 学习Oracle
- oracle学习
- Oracle 学习
- oracle学习
- ORACLE 学习
- 学习Oracle
- Oracle学习
- cocos2d-x初探学习笔记(8)--场景特效
- 黑马程序员---学习笔记
- Linux字符设备驱动 - VF(Virtual File) - ver 2
- Excel快捷键大全
- 在code::block中使用boost库
- oracle 聚簇 学习
- Effective C++读书笔记(6)
- 使用MinGW编译boost
- Properties文件操作
- HDU 3573 Buy Sticks 贪心
- 结构体的第一次
- 在IIS上启用Gzip压缩(HTTP压缩)
- 单例模式 singleton
- 中国云计算的产业链是什么样的