/* 分区表 */
优点:
* 提高查询性能,执行查询时只需要访问分区
* 易于管理和维护,各个分区在进行维护时是相互独立的,可以单独对分区进行重建索引,备份和恢复等操作.
对表进行分区后,各个分区可以具有不同的存储参数,或者可以位于不同的表空间中.
一个表可以分割成任意数目的分区,但如果在表中包含有LONG或者LONG RAW类型的字段,则不能进行分区
如下情况需要对表进行分区
1.表的大小超过2G
2.需要对一个表进行并行的DML操作
3.为了平衡硬盘I/O操作,需要将一个表分散存储在不同的表空间
4.需要将表的一部分设置成只读,而另一部分为可更新的.
oracle 9i有四种类型的分区表:范围分区,列表分区,散列分区,复合分区
1.范围分区
范围分区是按照分区字段中值的范围来对表进行分区,通常用于分区字段是日期类型的表
create table sales_range
(
salesman_id number(5),
salesman_name varchar2(30),
sales_amount number(10),
sales_data date
)
partition by range(sales_date)
(
partition pt_sales1999_q4 values less than
(to_date('01/01/2000','DD/MM/YYY'))
tablespace sale1999_q4,
pctfree 0
storage (initial 100M next 100M pctincrease 0)
partition pt_sales2000_q1 values less than
(to_date('01/04/2000','DD/MM/YYY'))
tablespace sale2000_q1,
partition pt_sales2000_q2 values less than
(to_date('01/07/2000','DD/MM/YYY'))
tablespace sale2000_q2,
partition pt_sales2000_q3 values less than
(to_date('01/10/2000','DD/MM/YYY'))
tablespace sale2000_q3,
partition pt_sales2000_q4 values less than
(maxvalue)
tablespace sale2000_q4,
)
storage (initial 50M next 50M pctincrease 0 maxentents 4096)
nologging;
oracle将认为NULL值大于一切其它非NULL值,如果字段的值可以为NULL,必须在某个分区中使用MAXVALUE关键字指定上限
添加新的范围分区
alter table sales_range
add partition pt_sales2000_q4 values less than
(to_date('01/01/2001','DD/MM/YYYY'))
tablespace sales2000_q4;
2.列表分区(需要为每个分区指定一个列表取值)
如果分区字段的值并不能划分范围,同时分区字段的取值范围只是一个包含少数值的集合,可以进行列表分区
create table sales_list
(
salesman_id number(5),
salesman_name varchar2(30),
sales_amount number(10),
sales_data date
)
partition by list(sales_state)
(
partition sales_west values in ('california','hawaii'),
partition sales_east values in ('new york','virginia','florida'),
partition sales_central values in ('texas','illionis'),
)
storage (initial 50M next 50M pctincrease 0 maxentents 4096)
nologging;
添加新的列表分区
alter table sales_list
add partition sales_north values in ('motana','minnisota');
/* 分区索引 */
oracle中,可以为分区表建立三种类型的索引
1.本地分区索引(为各个分区单独地建立索引分区,各个分区之间是相互独立的,用于DSS环境)
2.全局分区索引(对整个分区表建立索引,然后再对索引进行分区,用于OLTP环境中)
3.全局非分区索引(就是对应于一个分区表的普通的未分区的索引,作用与全局分区索引类似,用于OLTP环