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

Oracle表分区实例讲解

程序员文章站 2022-12-10 13:51:32
一、概述 当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区。表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存...

一、概述

当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区。表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个表空间(物理文件上),这样查询数据时,不至于每次都扫描整张表。

二、类型

1、范围分区

根据列的数值范围进行分区,最常见的是根据日期分区。

create table STUDENT(
 id  varchar2(20),
 name varchar2(20),
 birthday date,
 type varchar2(20)
)
partition by range(birthday)
(
   partition  S80 values less than (to_date('1990-01-01','yyyy-mm-dd')) TABLESPACE SP_01,
   partition  S90 values less than (to_date('2000-01-01','yyyy-mm-dd')) TABLESPACE SP_02
)

2、列表分区

根据列的具体值来分区,适用于列值固定的数据,如类型,部门。

create table STUDENT(
 id  varchar2(20),
 name varchar2(20),
 birthday date,
 type varchar2(20)
)
partition by list(type)
(
   partition  full_time values ('fullTime') TABLESPACE SP_01,
   partition  part_time values ('partTime') TABLESPACE SP_02
)

3、散列分区

这类分区是在列值上使用散列算法,以确定将行放入哪个分区中。当列的值没有合适的条件时,建议使用散列分区。散列分区为通过指定分区编号来均匀分布数据的一种分区类型,因为通过在I/O设备上进行散列分区,使得这些分区大小一致。

CREATE TABLE HASH_TABLE
(
  COL NUMBER(8),
  INF VARCHAR2(100)
)
PARTITION BY HASH (COL)
(
  PARTITION PART01 TABLESPACE HASH_TS01,
  PARTITION PART02 TABLESPACE HASH_TS02,
  PARTITION PART03 TABLESPACE HASH_TS03
)

4、组合分区

以上分区类型的组合

三、操作

1、查询特定分区里的数据

select * from track_list partition(M201801)

2、查看分区情况

select * from USER_TAB_PARTITIONS 

3、新增分区

alter table graderecord add partition S_01

4、删除分区

alter table table_name drop partition S_4

5、合并分区

ALTER TABLE SALES MERGE PARTITIONS P1,P2 INTO PARTITION P2

6、拆分分区

alter table graderecord split partition P_01 at(75) into(partition P_02,partition P_03)