创建分区表

原创 2004年10月18日 13:47:00
在oracle9i中 ,oracle支持多种类型分区:范围分区,散列分区,列表分区和混合分区
要创建一个范围分区,必须将用于分区的范围值作为create  table的一部分指定

create table   emp(
empno  number(10) primary  key,
name   varchar2(40),
deptno number(2),
salary  number(7,2),
birth_date date,
soc_sec_num  varchar2(9),
state_code  char(2),
constraint  fk_deptno  foreign  key (deptno)
references    dept(deptno),
constraint  fk_statecode  foreign  key (state_code)
references    state(state_code)
);

--如果要在emp 表中存储大量记录,可能希望将emp的行分到多个表中,若要按范围划分表的记录,可以使用
create table  命令的  partition  by  range 字句,这些范围确定存储在每个分区的值

 用作分区逻辑基础的列很少是表的主键,最长用的划分基础是表中的一个外健.

例:

create table   emp(
empno  number(10) primary  key,
name   varchar2(40),
deptno number(2),
salary  number(7,2),
birth_date date,
soc_sec_num  varchar2(9),
state_code  char(2),
constraint  fk_deptno  foreign  key (deptno)
references    dept(deptno),
constraint  fk_statecode  foreign  key (state_code)
references    state(state_code)
)
partition by range(deptno)
(partition   PART1  values  less  than  (11)  tablespace  PART1_TS,
partition   PART2  values  less  than  (21)  tablespace  PART2_TS,
partition   PART3  values  less  than  (31)  tablespace  PART3_TS,
partition   PART4  values  less  than  (MAXVALUE)  tablespace  PART4_TS
);

--直接从分区表中查询
select * from  emp    partition (PART2)
where  deptno between 11 and 20  ; 

--创建基于列表的复合分区表

create  table test(
user_id varchar2(40),
org_id  varchar2(40)
)
PARTITION BY RANGE (USER_ID)    --主分区
SUBPARTITION BY LIST (ORG_ID)  --子分区
SUBPARTITION TEMPLATE             --设置子分区模板
  (SUBPARTITION ORG_A VALUES ('a'),
   SUBPARTITION ORG_B VALUES ('b'),
   SUBPARTITION ORG_C VALUES ('c'),
   SUBPARTITION ORG_D VALUES ('d'),
   SUBPARTITION ORG_E VALUES ('e'),
   SUBPARTITION ORG_F VALUES ('f'),
   SUBPARTITION ORG_G VALUES ('g'),
   SUBPARTITION ORG_OTHER VALUES (DEFAULT)
  )
(---复合分区开始
PARTITION USER_Y VALUES LESS THAN ('y')   --复合分区主分区条件设置
  ( SUBPARTITION USER_Y_ORG_A VALUES ('a')    TABLESPACE USERS,
    SUBPARTITION USER_Y_ORG_B VALUES ('b')    TABLESPACE USERS,
    SUBPARTITION USER_Y_ORG_C VALUES ('c')    TABLESPACE USERS,
    SUBPARTITION USER_Y_ORG_D VALUES ('d')    TABLESPACE USERS,
    SUBPARTITION USER_Y_ORG_E VALUES ('e')    TABLESPACE USERS,
    SUBPARTITION USER_Y_ORG_F VALUES ('f')    TABLESPACE USERS,
    SUBPARTITION USER_Y_ORG_G VALUES ('g')    TABLESPACE USERS,
    SUBPARTITION USER_Y_ORG_OTHER VALUES (DEFAULT)    TABLESPACE USERS ), 
  PARTITION USER_Z VALUES LESS THAN ('z')
  ( SUBPARTITION USER_Z_ORG_A VALUES ('a')    TABLESPACE USERS,
    SUBPARTITION USER_Z_ORG_B VALUES ('b')    TABLESPACE USERS,
    SUBPARTITION USER_Z_ORG_C VALUES ('c')    TABLESPACE USERS,
    SUBPARTITION USER_Z_ORG_D VALUES ('d')    TABLESPACE USERS,
    SUBPARTITION USER_Z_ORG_E VALUES ('e')    TABLESPACE USERS,
    SUBPARTITION USER_Z_ORG_F VALUES ('f')    TABLESPACE USERS,
    SUBPARTITION USER_Z_ORG_G VALUES ('g')    TABLESPACE USERS,
    SUBPARTITION USER_Z_ORG_OTHER VALUES (DEFAULT)    TABLESPACE USERS ), 
  PARTITION USER_MAX VALUES LESS THAN (MAXVALUE)
  ( SUBPARTITION USER_MAX_ORG_A VALUES ('a')    TABLESPACE USERS,
    SUBPARTITION USER_MAX_ORG_B VALUES ('b')    TABLESPACE USERS,
    SUBPARTITION USER_MAX_ORG_C VALUES ('c')    TABLESPACE USERS,
    SUBPARTITION USER_MAX_ORG_D VALUES ('d')    TABLESPACE USERS,
    SUBPARTITION USER_MAX_ORG_E VALUES ('e')    TABLESPACE USERS,
    SUBPARTITION USER_MAX_ORG_F VALUES ('f')    TABLESPACE USERS,
    SUBPARTITION USER_MAX_ORG_G VALUES ('g')    TABLESPACE USERS,
    SUBPARTITION USER_MAX_ORG_OTHER VALUES (DEFAULT)    TABLESPACE USERS )
)-----复合分区结束

或者

create table test(
user_id varchar2(40),
org_id varchar2(40)
)
PARTITION BY RANGE (USER_ID)
SUBPARTITION BY LIST (ORG_ID)
SUBPARTITION TEMPLATE
(SUBPARTITION ORG_A VALUES ('a'),
SUBPARTITION ORG_B VALUES ('b'),
SUBPARTITION ORG_C VALUES ('c'),
SUBPARTITION ORG_D VALUES ('d'),
SUBPARTITION ORG_E VALUES ('e'),
SUBPARTITION ORG_F VALUES ('f'),
SUBPARTITION ORG_G VALUES ('g'),
SUBPARTITION ORG_OTHER VALUES (DEFAULT)
)
(
PARTITION USER_Y VALUES LESS THAN ('y') ,
PARTITION USER_Z VALUES LESS THAN ('z'),
PARTITION USER_MAX VALUES LESS THAN (MAXVALUE)
)

--创建基于散列子分区的复合分区

create table   emp(
empno  number(10) primary  key,
name   varchar2(40),
deptno number(2),
salary  number(7,2),
birth_date date,
soc_sec_num  varchar2(9),
state_code  char(2),
constraint  fk_deptno  foreign  key (deptno)
references    dept(deptno),
constraint  fk_statecode  foreign  key (state_code)
references    state(state_code)
)
partition by range(deptno)
SUBPARTITION BY hash (name)
SUBPARTITIONs  10
(partition   PART1  values  less  than  (11)  tablespace  PART1_TS,
partition   PART2  values  less  than  (21)  tablespace  PART2_TS,
partition   PART3  values  less  than  (31)  tablespace  PART3_TS,
partition   PART4  values  less  than  (MAXVALUE)  tablespace  PART4_TS
);



hive创建分区表

hive创建分区表
  • high2011
  • high2011
  • 2016年09月18日 13:45
  • 7873

Hive---外部分区表的创建

hive> create external table tv2(id int,name string,sex string) partitioned by(day int) > row fo...
  • a2011480169
  • a2011480169
  • 2016年07月22日 08:59
  • 1205

何时用、如何建Oracle分区表?

一、什么场景、时间适合用分区表? 1、大数据量的表,比如大于2GB。一方面2GB文件对于32位OS是一个上限,另外备份时间长。 2、包括历史数据的表,比如最新的数据放入到最新的分区中。典型...
  • wildboy2001
  • wildboy2001
  • 2012年11月13日 10:45
  • 8690

sql server 创建分区表

如果你的数据库中某一个表中的数据满足以下几个条件,那么你就要考虑创建分区表了。       1、数据库中某个表中的数据很多。很多是什么概念?一万条?两万条?还是十万条、一百万条?这个,我觉...
  • isoleo
  • isoleo
  • 2014年11月27日 15:57
  • 1806

MYSQL数据库创建表分区

MYSQL数据库通过日期创建表分区,日期需要使用日期函数(年月日时分秒) 1.用日期创建分区事例 DROP TABLE IF EXISTS `t_tfm_city_trafficindex...
  • superhoy
  • superhoy
  • 2016年09月13日 17:35
  • 3660

DB2分区表创建及分区索引的创建

一直用oracle数据库,近期刚接触
  • yunxiu2804
  • yunxiu2804
  • 2014年07月24日 19:55
  • 8733

DB2创建分区表

CREATE TABLE . ( USER_ID INTEGER NOT NULL, NAME VARCHAR(30),.... )--以上是正常创建表步骤,以下是创建分区表需要增加的 in t...
  • zoeyxy
  • zoeyxy
  • 2017年03月14日 09:29
  • 317

Mysql分区技术 --创建分区表

分区的作用:数据库性能的提升和简化数据管理 在扫描操作中,mysql优化器只扫描保护数据的那个分区以减少扫描范围获得性能的提高。 分区技术使得数据管理变得简单,删除某个分区不会对另外的分区...
  • qojpeojop
  • qojpeojop
  • 2016年01月22日 14:00
  • 158

oracle11g分区表按时间自动创建

oracle11g分区表按时间自动创建
  • rznice
  • rznice
  • 2017年02月13日 14:46
  • 3696

oracle按时间创建分区表

首先明确分区表和表分区的区别:表分区是一种思想,分区表示一种技术实现。当表的大小过G的时候可以考虑进行表分区,提高查询效率,均衡IO。oracle分区表是oracle数据库提供的一种表分区的实现形式。...
  • shanhuhau
  • shanhuhau
  • 2014年02月24日 09:57
  • 15333
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:创建分区表
举报原因:
原因补充:

(最多只允许输入30个字)