Oracle中的表分区

来源:互联网 发布:森林优化补丁 编辑:程序博客网 时间:2024/06/06 00:42

表分区:添加逻辑的划分,指定表中的某些数据可以存放在某个位置,适合大数据,但是不存在大量的更新(也叫数据仓储DSS-OLAP)或者在线事务型(OLTP,增、删、改比较频繁)

table一词来与数学,在数学中表示关系,在数据库中对应的硬盘上的物理文件

例子:

GET4--学号、姓名、成绩

逻辑上存放在一张表,实际存放在物理文件中

找到425~480之间的数据,如果是上百万条数据那么简单的逐行扫描查询效率过低,所以一种方式就是在存放数据的时候把表中的数据规定存放在某些区域上

425一下

425~450

450~500

500以上

如果按以上四个区域的划分区域,那么在特定的数据就只在某个区域查询,提高查询效率(注意:物理文件上的存储还是无序的)

1、范围分区:通过映射值分区

create table emp1

(

empno number(4) not null,

ename varchar2(10) not null,

job varchar2(10) not null

mgr number(4) not null,

hirdate date not null,

sal number(7,2) not null,

comm number(7,2) not null,

deptno number(2) not null

)

partition by range (sal)--说明是范围分区

--设置分区条件

(

partition p1 values less than(1500),--1500一下

partition p2 values less than(2500),--1500到250之间

partition p3 values less than(maxvalue)--其他的

)

可以通过查询分区来查询分区来的数据:

select * from emp1 partition (p1);


2、散列分区:

create table emp1

(

empno number(4) not null,

ename varchar2(10) not null,

job varchar2(10) not null

mgr number(4) not null,

hirdate date not null,

sal number(7,2) not null,

comm number(7,2) not null,

deptno number(2) not null

)

partition by hash(deptno)--自动分配

--设置分区条件

(

  partition p1,

 partition p2

)

3、列表分区

create table emp1

(

empno number(4) not null,

ename varchar2(10) not null,

sex varchar2(10) not null

mgr number(4) not null,

hirdate date not null,

sal number(7,2) not null,

comm number(7,2) not null,

deptno number(2) not null

)

partition by list(sex)

--设置分区条件

(

 partition p1 values ('男'),

 partition p2 values('女')

)


添加表分区:

alter table emp1 add partition p4 values less than (4000)

删除表分区:

alter table emp1 drop partition p3

拆分表分区:

alter talbe emp1 split partiton p3 at (2500) into (partition p4,partition p5)

合并表分区:

alter table emp1 merge partitions p3,p4 into partition p5

分区改名:

alter table emp1 rename partiton p3 to p4


0 0
原创粉丝点击