oracle 建立分区表
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
oracle 建立分区表
从上次在亚旭培训的时候,我和dba讨论一次我开发系统中为了一张表不是非常的大,采用了动态sql创建多个部门的表,然后存取相应的数据,从而解决了一张表过大的问题。当时dba和我说了分区表,我第一感觉,如果当时我知道数据库还有这种表,那我当时开发起来应该轻松的多,后来就一直有个想法,去了解分区表,因为最近自己一直都比较忙,被琐事所困,今天晚上终于抽出了点时间,了解了相关的知识,并做了400多w条数据的一个分区表的测试。
一.范围分区
范围分区将数据基于范围映射到每一个分区,这个范围是你在创建分区时指定的分区键决定的。
1 2 3 4 5 6 7 8 9
10
11
12 --例一取值范围:
CREATE TABLE CUSTOMER
(
CUSTOMER_ID NUMBER NOT NULL PRIMARY KEY, FIRST_NAME VARCHAR2(30) NOT NULL,
LAST_NAME VARCHAR2(30) NOT NULL,
PHONE VARCHAR2(15) NOT NULL,
EMAIL VARCHAR2(80),
STATUS CHAR(1)
)
PARTITION BY RANGE (CUSTOMER_ID)
(
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 PARTITION CUS_PART1 VALUES LESS THAN (100000) TABLESPACE CUS_TS01,
PARTITION CUS_PART2 VALUES LESS THAN (200000) TABLESPACE CUS_TS02,
PARTITION CUS_PART3 VALUES LESS THEN(MAXVALUE) TABLESPACE CUS_TS02
)
--例二按时间划分(随着时间的增长,还需要添加分区表):
CREATE TABLE ORDER_ACTIVITIES
(
ORDER_ID NUMBER(7) NOT NULL,
ORDER_DATE DATE,
TOTAL_AMOUNT NUMBER,
CUSTOTMER_ID NUMBER(7),
PAID CHAR(1)
)
PARTITION BY RANGE (ORDER_DATE)
(
PARTITION ORD_ACT_PART01 VALUES LESS THAN (TO_DATE('01- MAY
-2003','DD-MON-YYYY')) TABLESPACE ORD_TS01,
PARTITION ORD_ACT_PART02 VALUES LESS THAN
(TO_DATE('01-JUN-2003','DD-MON-YYYY')) TABLESPACE ORD_TS02,
PARTITION ORD_ACT_PART03 VALUES LESS THAN
(TO_DATE('01-JUL-2003','DD-MON-YYYY')) TABLESPACE ORD_TS03
)
1 2 3 4 5 6 --这个是我在自己电脑上测试的实例,一个sql竞赛的资料库中的数据
create table p_t2(a1 number,a2 varchar2(10),a3 varchar2(30),a4 varchar2(10),a5 number)
partition by list(a2)
(partition p_tcp values('tcp') tablespace p1,
partition p_udp values('udp') tablespace p2,
partition p_icmp values('icmp') tablespace p3)
三.散列分区
这类分区是在列值上使用散列算法,以确定将行放入哪个分区中。当列的值没有合适的条件时,建议使用散列分区。
散列分区为通过指定分区编号来均匀分布数据的一种分区类型,因为通过在I/O 设备上进行散列分区,使得这些分区大小一致。
1 2 3 4 5 6 7 CREATE TABLE HASH_TABLE (
COL NUMBER(8),
INF VARCHAR2(100)
)
PARTITION BY HASH (COL) (
8 9
10
11
12
13
14
15
16
17
18
19
20 PARTITION PART01 TABLESPACE HASH_TS01,
PARTITION PART02 TABLESPACE HASH_TS02,
PARTITION PART03 TABLESPACE HASH_TS03
)
--简写:
CREATE TABLE emp
(
empno NUMBER (4),
ename VARCHAR2 (30),
sal NUMBER
)
PARTITION BY HASH (empno) PARTITIONS 8
STORE IN(emp1,emp2,emp3,emp4,emp5,emp6,emp7,emp8);
1 2 3 4 5 CREATE TABLE SALES
(
PRODUCT_ID VARCHAR2(5), SALES_DATE DATE, SALES_COST NUMBER(10),