欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

ORACLE 分区表

程序员文章站 2024-02-12 17:37:16
...

分区表的基本思想就是“分而治之”,所谓“分而治之”就是允许用户将一个存储大数据量表划分成若干个部分,想成相对

分区表的基本思想就是“分而治之”,所谓“分而治之”就是允许用户将一个存储大数据量表划分成若干个部分,想成相对小、可以独立管理的分区。从而减少了表中数据的存储量,同时加快了检索表数据查询效率。

ORACLE 分区表类型有:范围分区、列表分区、间隔分区、散列分区、虚拟分区等。

这次就练习范围分区的创建和使用,直接进入实战:

--创建test_partitioning表,并以t_id为范围进行分区

create table test_partitioning(
t_id number,
t_name varchar2(10)
)
partition by range(t_id) --range(t_id)表示以t_id作为范围分区列
(
partition t_p1 values less than(2), --2表此区间存放最上限,不包括2(存放至 partition t_p2 values less than(4),
partition t_p3 values less than(6)
);

SQL> insert into test_partitioning values(1,'a');
1 row inserted
SQL> insert into test_partitioning values(2,'b');
1 row inserted
SQL> insert into test_partitioning values(3,'c');
1 row inserted
SQL> insert into test_partitioning values(4,'d');
1 row inserted
SQL> insert into test_partitioning values(5,'e');
1 row inserted

SQL> commit;
Commit complete

--查询所有分区数据
SQL> select * from test_partitioning;
T_ID T_NAME
---------- ----------
1 a
2 b
3 c
4 d
5 e

--查询指定分区的数据

SQL> select * from test_partitioning partition(t_p3);
T_ID T_NAME
---------- ----------
4 d
5 e

--插入一条不在分区范围内的数据

SQL> insert into test_partitioning values(7,'t');
insert into test_partitioning values(7,'t')
ORA-14400: 插入的分区关键字未映射到任何分区


--创建没有满足条件默认接收的分区表

SQL> create table test_partitioning2(
2 t_id number,
3 t_name varchar2(10)
4 )
5 partition by range(t_id)
6 (
7 partition t_p1 values less than(2),
8 partition t_p2 values less than(4),
9 partition t_p3 values less than(6),
10 partition t_p4 values less than(MAXVALUE) --存放没有满足以上三分区条件数据
11 );
Table created

SQL> insert into test_partitioning2 values(1,'a');
1 row inserted
SQL> insert into test_partitioning2 values(2,'b');
1 row inserted
SQL> insert into test_partitioning2 values(3,'c');
1 row inserted
SQL> insert into test_partitioning2 values(4,'d');
1 row inserted
SQL> insert into test_partitioning2 values(5,'e');
1 row inserted
SQL> insert into test_partitioning2 values(7,'e'); --没有满足条件的一律保存到t_p4分区
1 row inserted
SQL> insert into test_partitioning2 values(8,'e'); --没有满足条件的一律保存到t_p4分区
1 row inserted

--查询所有分区数据
SQL> select * from test_partitioning2;
T_ID T_NAME
---------- ----------
1 a
2 b
3 c
4 d
5 e
7 e
8 e
7 rows selected


--查询指定分区的数据

SQL> select * from test_partitioning2 partition(t_p1);
T_ID T_NAME
---------- ----------
1 a

--查询没有满足以上三分区条件数据都放入t_p4分区

SQL> select * from test_partitioning2 partition(t_p4);
T_ID T_NAME
---------- ----------
7 e
8 e

--oracle分区就是为了减轻大数据表存数数据量,从而减轻表数据过多负担,分区而治提高查询效率。