oracle数据库中的表

本文内容摘自《收获,不止Oracle》,这确实是一本好书啊。看了好久我才意识到,书中脚本中的 "LJB" ,原来是作者“梁敬彬”的拼音缩写啊。哈哈。。。。。

五种表的优缺点:

优点
缺点
普通堆表
(适合大部分
设计场景)
1、语法简单方便
2、适用于大部分场景
1、表更新日志开销较大
2、delete无法释放空间
3、表记录太大检索较慢
4、索引回表读开销很大
5、即便有序插入,也难以有序读出
全局临时表
(尤其适合
接口表设计)
1、高效删除
2、产生日志少
3、不同session独立,不产生锁
1、语法特别
2、数据无法得到有效的保护
分区表
(尤其适合
日志表)
1、有效的分区消除
2、高效的记录清理
3、高效的记录转移
1、语法复杂
2、分区过多对系统有一定的影响
索引组织表
(适合极少更新
的配置表)
1、表就是索引,可以避免回表
1、语法复杂
2、更新开销较大
簇表
(使用频繁关联
查询的多表)
1、可以减少或避免排序
1、语法复杂
2、表更新开销大


一、普通堆表


二、全局临时表

        

  (1)建表语法
  例:
     ①基于会话的全局临时表
          create global temporary  table T_TMP _SESSION   on commit preserve rows as select * from dba_objects where 1=2;

     ②基于事务的全局临时表
create global temporary  table T_TMP_TRANSACTION  on commit delete rows as select * from dba_objects where 1=2;
   

三、分区表

      原理:不同分区,在不同的 SEGMENT 中
     类型:    RANGE分区 、 LIST分区、   HASH分区 、  组合分区
     
     建表语法:
    例:
    (1)范围分区
        create table range_part_tab(id number,deal_date date,area_code
number,contents varchar2(4000))
 partition by range(deal_date)
(
   partition p1 values less than(TO_DATE('2012-02-01','YYYY-MM-
DD')),
  partition p2 values less than(TO_DATE('2012-03-01','YYYY-MM-
DD')),
 . ..
 . ..
 . ..
  partition p12 values less than(TO_DATE('2013-01-01','YYYY-MM-
DD')),
  partition p_max  values less than(maxvalue)
);

     (2)列表分区
        create table list_part_tab(id number,deal_date date,area_code
number,contents varchar2(4000))
  partition by list(area_code)
 (
      partition p_591 values (591),
     partition p_592 values (592),
     . ..
     . ..
     ...
     partition p_599 values (599),
      partition p_other values (DEFAULT)
 );

     (3)散列分区
    create table hash_part_tab(id number,deal_date date,area_code
number,contents varchar2(4000))
 partition by hash(deal_date)
 partitions 12;    --指定分区个数

     (4)组合分区
            范围-列表组合分区:
        create table range_list_part_tab(id number,deal_date date,area_code
number,contents varchar2(4000))
 subpartition by list(area_code)
 subpartition TEMPLATE
subpartition p_591 values (591),
  subpartition p_592 values (592),
   .
   .
   .
  subpartition p_599 values (599),
  subpartition p_other values (DEFAULT))
(
   partition p1 values less than (TO_DATE('2012-02-01','YYYY-MM-
DD')),
  partition p2 values less than(TO_DATE('2012-03-01','YYYY-MM-
DD')),
.
.
.
  partition p12 values less than(TO_DATE('2013-01-01','YYYY-MM-
DD')),
  partition p_max values less than(maxvalue)
);

四、索引组织表

         索引组织表,必须有主键
        建表语法如下:
        create table iot_addresses
  (empno number(10),
   addr_type varchar2(10),
   street varchar2(10),
   city varchar2(10),
   state varchar2(2),
   zip number,
  primary key(empno)
  )
   organization index

五、簇表

        有序簇表可以避免排序
        以下是建一个有序簇表的例子
create  cluster shc
(
    cust_id number,
    order_dt timestamp SORT
)
HASHKEYS 10000
HASH IS cust_id
SIZE 8192
create table cust_orders
( cust_id number,
   order_dt timestamp SORT,
   order_number number,
   username number,
   ship_addr number,
   bill_addr number,
   invoice_num number
)
CLUSTER shc(cust_id, order_dt )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值