您现在的位置是:首页 >

建立数据库的详细步骤 详细介绍Oracle数据库的聚簇技术

火烧 2022-12-24 09:35:08 1035
详细介绍Oracle数据库的聚簇技术    什么是聚簇   聚簇是根据码值找到数据的物理存储位置 从而达到快速检索数据的目的 聚簇索引的顺序就是数据的物理存储顺序 叶节点就是数据节点 非聚簇索引的顺序

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

   什么是聚簇

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

  

   使用 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 (Col VARCHAR ( ));

  

  这样就建立了一个没有任何内容的簇(象给表分配了一块空间一样) COL 的使用对于簇键是不相干的 不会再使用它 但是 它的定义应该与要增加的表的主键相符 接下来 建立包含在该簇中的表

  

建立数据库的详细步骤 详细介绍Oracle数据库的聚簇技术

  create table BOOKSHELF (Title VARCHAR ( ) primary key Publisher VARCHAR ( ) CategoryName VARCHAR ( ) Rating VARCHAR ( ) constraint CATFK foreign key (CategoryName) references CATEGORY(CategoryName) ) cluster BOOKandAUTHOR(Title);

  

  在向BOOKSHELF表中插入数据行之前 必须建立一个聚簇索引

  

  create index BOOKandAUTHORndx on cluster BOOKandAUTHOR;

  

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

  

  create table BOOKSHELF_AUTHOR (Title VARCHAR ( ) AuthorName VARCHAR ( ) constraint TitleFK Foreign key (Title) references BOOKSHELF(Title) constraint AuthorNameFK Foreign key (AuthorName) references AUTHOR(AuthorName) ) cluster BOOKandAUTHOR (Title);

  

  当这两个表被聚在一起时 每个唯一的Title在簇中实际只存储一次 对于每个Title 都从这两个表中附加列

  来自这两个表的数据实际上存放在一个位置上 就好像簇是一个包含两个表中的所有数据的大表一样

  

   散列聚簇

  

  对于散列聚簇 它只有一个表 它通过散列算法求出存储行的物理存储位置 从而快速检索数据 创建散列聚簇时要指定码列的数据类型 数据行的大小及不同码值的个数 如果码值不是平均分布的 就可能有许多行存储到溢出块上 从而会降低查询该表的SQL语句的性能

  

  散列聚簇被用在总是通过主键查询数据的情况 例如要从表 T 查询数据并且查询语句总是是这样

  

  select * from T where id = :x;

  

  

  

  

  这时散列聚簇是一个好的选择 因为不需要索引 Oracle 将通过散列算法得到值 :x 所对应的物理地址 从而直接取到数据 不用进行索引扫描 只通过散列值进行一次表访问

  

  散列聚簇语法示例

  

lishixinzhi/Article/program/Oracle/201311/18689  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码