1. 什么是聚簇
聚簇是根据码值找到数据的物理存储位置,从而达到快速检索数据的目的。聚簇索引的顺序就是数据的物理存储顺序,叶节点就是数据节点。
非聚簇索引的顺序与数据物理排列顺序无关,叶节点仍然是索引节点,只不过有一个指针指向对应的数据块。一个表最多只能有一个聚簇索引。
2. 使用 Oracle 聚簇索引
聚簇是一种存储表的方法,这些表密切相关并经常一起连接进磁盘的同一区域。例如,表 BOOKSHELF 和BOOKSHELF_AUTHOR 数据行可以一起插入到称为簇(Cluster)的单个区域中,而不是将两个表放在磁盘上的不同扇区上。簇键(Cluster Key)可以是一列或多列,通过这些列可以将这些表在查询中连接起来(例如,BOOKSHELF表和BOOKSHELF_AUTHOR表中的 Title列)。为了将表聚集在一起,必须拥有这些将要聚集在一起的表。
下面是create cluster命令的基本格式:
|
cluster的名字遵循表命名约定,column datatype是将作为簇键使用的名字和数据类型。column的名字可以与将要放进该簇中的表的一个列名相同,或者为其他有效名字。下面是一个例子:
|
这样就建立了一个没有任何内容的簇(象给表分配了一块空间一样)。COL1的使用对于簇键是不相干的,不会再使用它。但是,它的定义应该与要增加的表的主键相符。接下来,建立包含在该簇中的表:
|
在向BOOKSHELF表中插入数据行之前,必须建立一个聚簇索引:
|
在上面的create table语句中,簇BOOKandAUTHOR(Title)子句放在表的列清单的闭括号的后面。BOOKandAUTHOR是前面建立的聚簇的名字。Title是将存储到聚簇Col1中的该表的列。create cluster语句中可能会有多个簇键,并且在created table语句中可能有多个列存储在这些键中。请注意,没有任何语句明确说明Title列进入到Col1中。这种匹配仅仅是通过位置做到的,即Col1和Title都是在它们各自的簇语句中提到的第一个对象。多个列和簇键是第一个与第一个匹配,第二个与第二个匹配,第三个与第三个匹配,等等。现在,添加第二个表到聚簇中:
|
当这两个表被聚在一起时,每个唯一的Title在簇中实际只存储一次。对于每个Title,都从这两个表中附加列。
来自这两个表的数据实际上存放在一个位置上,就好像簇是一个包含两个表中的所有数据的大表一样。
3. 散列聚簇
对于散列聚簇,它只有一个表。它通过散列算法求出存储行的物理存储位置,从而快速检索数据。创建散列聚簇时要指定码列的数据类型,数据行的大小及不同码值的个数。如果码值不是平均分布的,就可能有许多行存储到溢出块上,从而会降低查询该表的SQL语句的性能。
散列聚簇被用在总是通过主键查询数据的情况,例如要从表 T 查询数据并且查询语句总是是这样:
|
这时散列聚簇是一个好的选择,因为不需要索引。Oracle 将通过散列算法得到值 :x 所对应的物理地址,从而直接取到数据。不用进行索引扫描,只通过散列值进行一次表访问。
散列聚簇语法示例:
|
·数据库处理专题 (7528篇文章)
·城域网专题 (6839篇文章)
·数据库安全技术专题 (11412篇文章)
·数据库安装与卸载 (9189篇文章)
·Oracle 10g基础应用 (4128篇文章)
·Linux数据库宝典 (11765篇文章)
·数据库相关文章 (4553篇文章)
·数据库体系架构 (994篇文章)
·Oracle基础 (343篇文章)
·Oracle架构的基础知识(入门级) (9183次浏览)
·简单的Oracle存储过程的创建方法(菜鸟级) (8263次浏览)
·VMware下RedHat安装Oracle 9i RAC全攻略 (8170次浏览)
·ORACLE中的各种数据类型详细的介绍 (6483次浏览)
·Oracle的初学者入门心得 (3401次浏览)
·四大数据库的比较(SQL Server、Oracle、Sy (3336次浏览)
·双机热备Oracle数据库服务器操作实战 (2928次浏览)
·如何在oracle中导入dmp数据库文件 (1453次浏览)
·开启企业殿堂的钥匙 Oracle服务器的安装 (1419次浏览)
·南华早报集团成功在NetApp统一化存储系统上整合关 10-28
·Oracle总裁建立新公司 推出存储系统 10-28
·飞康通过Oracle存储兼容性计划确认测试 10-28
·百亿美元收购成就存储巨头 5万用户EMC上运行Oracle 10-28
·Oracle部署NetApp公司的存储超过1000TB 10-28
·SEPATON S2100-ES2获Oracle认证 10-28
·Oracle与赛门铁克共同认证Veritas数据中心解决方案 10-28
·戴尔、EMC、英特尔与Oracle发起MEGAGRID计划 10-28
·Oracle网格技术 欧洲企业成绩可圈可点 10-28



