关闭

特殊表

114人阅读 评论(0) 收藏 举报

一、临时表

  1、特点:

    不能备份临时表

    oracle不会分析临时表

    可以在临时表上创建索引

    可以在临时表上创建约束

    创建临时表之后不会立即分配段,而是在第一次写数据之后分配

    临时表对所有用户共享,但每个用户只能看到自己事务或者会话的数据

    可以对临时表进行insert、update、delete操作

    锁的数量少

    临时表中的数据在会话或者事务结束之后自动删除

  2、会话临时表

    创建会话临时表需要明确指定on commit preserve rows选项。

    create global temporary table (column_name1 data_type ['column_nmame2 data_type ....])

    on commit preserve rows;

  3、事务临时表

    默认为事务临时表,可以不指定on commit delete rows选项

    create global temporary table (column_name1 data_type ['column_nmame2 data_type ....])

    on commit delete rows;

二、索引组织表(index-organized table 简称IOT)

  IOT使用B-tree索引结构存储数据表

  访问IOT只需一个i/o,而访问一般被索引的表需要两个i/o(如果使用索引)

  表中数据一起存储在索引中,而不只是rowid和索引键值

  IOT非常适合用于经常基于主键查询的情况

  创建oit:

  create table table_name(

  column_name1 data_type primary key  --必须创建主键约束

  [,column_name2 data_type ....]

  )

  organization index  --指明是iot

  tablespace tablespace_name

  pctthreshold n  --指明为表数据预留的空间百分比,溢出部分存放在溢出区;n不能超过50,如果太小,会出现行的链接问题。

  including column_name  --指明如果溢出,哪个列放之后的数据放入溢出区

  overflow tablespace tablespace_name;  --指定溢出区所在表空间

三、集群表

  两个或者多个表根据相似列、物理地存储在集群中

  集群表可以提高表的链接速度,便于查询

  创建集群表:

  1、创建集群

    create cluster cluster_name(cluster_key data_type)

    tablespace tablespace_name;

  2、散列集群

    create cluster cluster_name(cluster_key data_type)

    tablespace tablespace_name

    hash is cluster_key hashkeys n;

  3、创建集群表

    create table table_name(

    column_name1 data_type  --该列与集群键名称相同、数据类型相同、数据长度也相同。

    [,column_name2 data_type [,....]]

    )

    cluster cluster_name(column_name1);

  4、删除集群

    drop cluster cluster_name;

    如果集群已经有表,则用如下方式删除:

    drop cluster cluster_name including tables;

 

四、分区表

  1、范围分区

    数据均匀分布在不同范围内

    create table table_name(

    column_name1 data_type

    [,.....])

    partition by range(column_name1)

    (partition par_name1 values less than (value1)[ tablespace tbs_name],

    ....

    );

  2、散列分区

    数据分布不均匀

    create table table_name(]

    column_name1 data_type

    [, ....]

    )

    partition by hash(column_name1)

    partitions n   --n为分区个数

    store in (tbs_name1 [,tbs_name2 [, ....]]);  --表空间个数量可以小于分区个数

    或者:

    create table table_name(]

    column_name1 data_type

    [, ....]

    )

    partition by hash(column_name1)

    (partition par_name1 [tablespace tbs_name1]

    [, ....]

    );

  3、列表分区

    数据的值可以枚举

    create table table_name(]

    column_name1 data_type

    [, ....]

    )

    partition by list(column_name1)

    (partition par_name1 values(value1 [, ...]) tablespace tbs_name1

    [, ....]

   )

  4、范围-散列分区

    create table table_name(]

    column_name1 data_type

    [, ....]

    )

    partition by range(column_name1)

    subpartition by hash(column_name2)

    subpartitions n  --n为子分区个数

    (

    partition par_name values less than (value1) [ tablespace tbs_name]

    [, ....]

    )

    或者: 

    create table table_name(]

    column_name1 data_type

    [, ....]

    )

    partition by range (column_name1)

    subpartition by hash(column_name2)

    (

    partition par_name1 values less than (value1) [tablespace tbs_name]

        subpartition subpar_name1

        [, ....]

    [, ....]

    );

  5、范围-列表分区

    create table table_name(]

    column_name1 data_type

    [, ....]

    )

    partition by range(column_name1)

    subpartition by list(column_name2)

    (

    partition par_name1 values less than(value1) [tablespace tbs_name]

        subpartition subpar_name1 values(value1 [, ....])

        [, ......]

    [, ....]

    );

 

  分区的管理待续。

 

 

 

   

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:45981次
    • 积分:929
    • 等级:
    • 排名:千里之外
    • 原创:48篇
    • 转载:8篇
    • 译文:0篇
    • 评论:0条