热门关键字:  ubuntu  分区  函数  Fedora  linux系统进程

详细介绍 Oracle 数据库的聚簇技术

来源: 作者: 时间:2008-08-20 Tag: 点击:

1. 什么是聚簇

聚簇是根据码值找到数据的物理存储位置,从而达到快速检索数据的目的。聚簇索引的顺序就是数据的物理存储顺序,叶节点就是数据节点。非聚簇索引的顺序与数据物理排列顺序无关,叶节点仍然是索引节点,只不过有一个指针指向对应的数据块。一个表最多只能有一个聚簇索引。

 

2. 使用 Oracle 聚簇索引

 

聚簇是一种存储表的方法,这些表密切相关并经常一起连接进磁盘的同一区域。例如,表 BOOKSHELF 和BOOKSHELF_AUTHOR 数据行可以一起插入到称为簇(Cluster)的单个区域中,而不是将两个表放在磁盘上的不同扇区上。簇键(Cluster Key)可以是一列或多列,通过这些列可以将这些表在查询中连接起来(例如,BOOKSHELF表和BOOKSHELF_AUTHOR表中的 Title列)。为了将表聚集在一起,必须拥有这些将要聚集在一起的表。

 

下面是create cluster命令的基本格式:

 

create cluster (column datatype [, column datatype]...) [other options];

 

cluster的名字遵循表命名约定,column datatype是将作为簇键使用的名字和数据类型。column的名字可以与将要放进该簇中的表的一个列名相同,或者为其他有效名字。下面是一个例子:

 

create cluster BOOKandAUTHOR (Col1 VARCHAR2(100));

 

这样就建立了一个没有任何内容的簇(象给表分配了一块空间一样)。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表中插入数据行之前,必须建立一个聚簇索引:

 

create index BOOKandAUTHORndx on cluster BOOKandAUTHOR;

 

在上面的create table语句中,簇BOOKandAUTHOR(Title)子句放在表的列清单的闭括号的后面。BOOKandAUTHOR是前面建立的聚簇的名字。Title是将存储到聚簇Col1中的该表的列。create cluster语句中可能会有多个簇键,并且在created table语句中可能有多个列存储在这些键中。请注意,没有任何语句明确说明Title列进入到Col1中。这种匹配仅仅是通过位置做到的,即Col1和Title都是在它们各自的簇语句中提到的第一个对象。多个列和簇键是第一个与第一个匹配,第二个与第二个匹配,第三个与第三个匹配,等等。现在,添加第二个表到聚簇中:

最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册