oracle表分区
oracle允许用户对表进行进一步规划,即对表进行进一步拆分,将表分成若干个逻辑部分,灭个不妨称其为表分区
范围分区:
根据表中列值的范围进行分区
语法:Partition by range(字段名)(
Partition 分区名 values less than (60), --60以下
Partition 分区名 values less than (75), --60~75
Partition 分区名 values less than (85), --75~85
Partition 分区名 values less than (maxvalue) --85~max
);
散列分区:
通过制定分区编号来均匀的分布数据的方法
通过Hash函数(oracle系统提供)将数据映射到相应的分区上。
语法:Partition by hash(字段名)(
Partition 分区名,
Partition 分区名
);
复合分区:
先对数据进行范围分区,然后再每个子分区内进行散列分区。
语法:Partition by range(字段名)
Subpartition by hash(字段名)(
Partition p1 values less than(10),
(subpartition sp1,subpartition sp2),
Partition p2 values less than(20),
(subpartition sp3,subpartition sp4)
);
这样子就分成了4个分区
列表分区:
允许用户明确的控制行到分区的映射
允许按自然方式对无序或不相关的数据进行分组和组织
语法:
Partition by list(字段名)(
Partition 分区名 values('值','值','值')),
Partition 分区名 values('值')),
Partition 分区名 values('值','值'))
);
对分区中数据进行查询时,可以指定查询的分区,如:select * from student partition(p1);