zoukankan      html  css  js  c++  java
  • oracle的散列聚簇表

    在簇表中,Oracle使用存储在索引中的键值来定位表中的行,

    而在散列聚簇表中,使用了散列函数代替了簇索引,先通过内部函数或者自定义的函数进行散列计算,然后再将计算得到的码值用于定位表中的行。

    创建散列簇需要用到HASHKEYS子句。

    1、创建散列簇

    create cluster my_clu_two(empno number(10) )  
      pctused 70  
      pctfree 10  
     tablespace users  
     hash is empno  
     hashkeys 150 ;  

    注:* hash is 子句指明了进行散列的列,如果列是唯一的标示行,就可以将列指定为散列值

          * hashkeys 指定和限制散列函数可以产生的唯一的散列值的数量

    2、创建散列表

    create table t2_emp (  
      empno number (10),  
      ename varchar2 (20),  
      birth_date date ,  
      deptno number)  
    cluster my_clu_two(empno); 

    注:* 必须设置数值的精度

          * 散列簇不能也不用创建索引

          * 散列簇不能ALTER:size、hashkeys、hash is参数

    3、不宜用聚簇表的情况

    • 如果预料到聚簇中的表会大量修改,聚簇表会对DML的性能产生负面影响
    • 非常不适合对单表的全表扫描,因为只能引起对其它表的全表扫描
    • 频繁对表进行TRUNCATE和加载,因为聚簇中的表是不能TRUNCATE的,只能TRUNCATE簇
    • 如果表只是偶尔被连接或者它们的公共列经常被修改,则不要聚簇表
    • 如果经常从所有有相同聚簇键值的表查询出的结果数据超过一个或两个Oracle块,则不要聚簇表
    • 如果空间不够,并且不能为将要插入的新记录分配额外的空间,那么不要使用聚簇
  • 相关阅读:
    C\C++\Java字符串拼接比较
    Visual Assist X支持VS2010高亮显示CUDA代码(Windows 7)
    相似字符串(编程之美2013初赛题2)
    linux mdadm raid阵列重建加速bitmaps文件
    Pig Grunt之简单命令及实例说明
    error: device not found解决
    Spring配置文件错误
    Java贪吃蛇游戏(坐标方法)
    java增强型for循环(三种遍历集合方式)
    酸菜鱼的简单做法
  • 原文地址:https://www.cnblogs.com/feiyun126/p/3161127.html
Copyright © 2011-2022 走看看