Oracle_4_同义词、分区、分区索引

数据切分:

    1、垂直:不同的表存放在不同的地方。

    2、水平:按照规则将同一个表中的数据分开存放。

 


零、同义词

同义词指给对象取一个别名,即可通过别名来访问到对象,在对象名很长的适合,用同义词会很好。

创建:

create synonym 别名 for 对象

删除:

drop synonym 别名;

一、range分区(范围分区)

创建表的时候,可以按照规则把一个表分成几个部分,分开存放。

结构:

create table 表名(字段信息)
    --选定字段进行分区
    partition by range(字段名)(
         --此区域为字段值小于上限1的数据
         partition  分区名1 values less than(上限1),
         --此区域为字段值大于上限1,小于上限2的数据
         partition  分区名2 values less than(上限2),
         --此区域为字段值大于上限2,小于上限3的数据
         partition  分区名3 values less than(上限3),
         --此区域为字段值大于上限3的数据
         partition  分区名4 values less than(maxvalue)
 );
--设置此表可以跨区进行数据更新,即数据更新后会自动移动所在分区,不设置则可能会因为规则而更新失败
alter table 表名 enable row movement;

例子:

--创建一个表,根据薪资分为几个区域储存
create table sales(
       pid number(10),
       salary number(10,2)
)partition by range(salary)(
         --此区域为: 1000>salary 的数据
         partition  p1 values less than(1000),
         --此区域为: 3000>salary>1000 的数据
         partition  p2 values less than(3000),
         --此区域为: 5000>salary>3000 的数据
         partition  p3 values less than(5000),
         --此区域为: salary>5000的数据
         partition  p4 values less than(maxvalue)
 );
alter table sales enable row movement;

分区情况查看:

--借助数据词典查看所有表分区情况
select * from user_tab_partitions;

分区数据查看:

select * from 表名 partition(分区名);

新建:

alter table 表名 add partition 分区名 values less than(上限)

删除:

alter table 表名 drop partition 分区名

 

二、间隔分区(interval)

range的升级,它能够通过指定时间间隔,实现自动分区。

结构:

create table 表名 (字段信息)
partition by range(字段名)
--分区规则:一个月一个区域 interval(numtoyminterval(
1,'MONTH')) (
   --第一个分区为指定日期之前的数据,此后的分区,按照规则自动创建 partition 分区名
values less than (TIMESTAMP'2014-02-01 00:00:00.00') )

其它分区:

  散列分区:hash分区,把数据平均,分配到各个区域中。

  列表分区:list分区,建立列表,进行相应的区域分配。

  复合分区.....


三、分区索引

在数据进行分区后,可以建立与之对应的分区索引。

1、local,为每个分区建立对应索引。

创建:

create index 索引名 on 表名(字段名)local

2、global,灵活为指定区域创建索引。

创建:

create index 索引名 on 表名(字段名) global
partition by range(字段名)(
   partition 分区名1 values less than(上限1)
   partition 分区名2 values less than(上限2)
   ....
   --必须要有maxvalue
   partition 分区名n values less than(maxvalue)

)

创建全局索引:

create index 索引名 on 表名(字段名) global

查看分区索引:

--借助数据词典
select * from user_ind_partitions;

 

posted @ 2023-01-04 18:51  在博客做笔记的路人甲  阅读(95)  评论(0编辑  收藏  举报