1.range
//表和分区一同创建才会使分区生效
create table part_andy1(
id int primary key,
first_count NUMBER(10,2)
)
PARTITION BY RANGE (FIRST_count)(
PARTITION PART1 VALUES LESS THAN (1000) ,
PARTITION PART2 VALUES LESS THAN (2000),
PARTITION PART3 VALUES LESS THAN (3000)
);

select * from part_andy1
--查询当前库中所有分区表信息
select * from user_tab_partitions

insert into part_andy1 values(1,100);
insert into part_andy1 values(2,1200);
insert into part_andy1 values(3,2100);

select * from part_andy1 PARTITION(PART1);
select * from part_andy1 PARTITION(PART2);
select * from part_andy1 PARTITION(PART3);

--可以修改改变分区值的数据了
alter table part_andy1 enable row movement
--更改分区字段的值
update part_andy1 set first_count=600 where id=3

--创建分区索引 局部索引,而且只能在分区字段上创建
create index idx_count on part_andy1(first_count) local;
--查询分区的索引信息
select * from user_ind_partitions

2.间隔分区 RANGE的升级版 按照时间分区
--动态分区 RANGE的升级版 按照时间分区
create table interval_sale(
id int primary key,
sdate timestamp
)
PARTITION BY RANGE (sdate)
interval (NUMTOYMINTERVAL(1, 'MONTH'))
(
PARTITION PART1 VALUES LESS THAN (timestamp '2014-02-01 00:00:00.00')
);

select * from interval_sale
--查询分区表信息
select * from user_tab_partitions

insert into interval_sale values(1,timestamp '2014-02-01 00:00:00.00');
insert into interval_sale values(2,timestamp '2017-02-01 00:00:00.00');
insert into interval_sale values(3,timestamp '2017-02-07 00:00:00.00');

select * from interval_sale PARTITION(SYS_P21);
select * from interval_sale PARTITION(PART1);
select * from interval_sale PARTITION(SYS_P22);

表分区是将一个表中的数据分成多个区域,可以提高查询的速度,一张表只能全表扫描查询,但是分区查询,就可以根据查询条件定位到具体分区,提高查询效率。
如果想对非分区字段创建索引,就只能是全局索引了,跟分区没有关系了。
如果按照索引是否分区作为划分依据,Oracle 的索引类型可以分为非分区索引,全局分区索引和本地分区索引。