Oracle表分区实例讲解

一、概述

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

二、类型

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)
(0)
上一篇 2022年3月22日
下一篇 2022年3月22日

相关推荐