内容发布更新时间 : 2025/3/19 1:47:10星期一 下面是文章的全部内容请认真阅读。
Oracle表分区分为四种:范围分区,散列分区,列表分区和复合分区。
一:范围分区
就是根据数据库表中某一字段的值的范围来划分分区,例如: Sql代码:
create table graderecord (
sno varchar2(10), sname varchar2(20), dormitory varchar2(3), grade int
)
partition by range(grade)
(
partition bujige values less than(60), --不及格 partition jige values less than(85), --及格
partition youxiu values less than(maxvalue) --优秀 )
插入实验数据:
Sql代码:
Insert into graderecord values('511601','魁','229',92); insert into graderecord values('511602','凯','229',62); insert into graderecord values('511603','东','229',26); insert into graderecord values('511604','亮','228',77);
insert into graderecord values('511605','敬','228',47);
insert into graderecord(sno,sname,dormitory) values('511606','峰','228'); insert into graderecord values('511607','明','240',90); insert into graderecord values('511608','楠','240',100); insert into graderecord values('511609','涛','240',67); insert into graderecord values('511610','博','240',75); insert into graderecord values('511611','铮','240',60);
下面查询一下全部数据,然后查询各个分区数据,代码一起写:
Java代码:
select * from graderecord;
select * from graderecord partition(bujige); select * from graderecord partition(jige); select * from graderecord partition(youxiu); 全部数据如下:
不及格数据如下:
及格数据如下:
优秀数据如下:
说明:数据中有空值,Oracle机制会自动将其规划到maxvalue的分区中。
二:散列分区
散列分区是根据字段的hash值进行均匀分布,尽可能的实现各分区所散列的数据相等。 还是刚才那个表,只不过把范围分区改换为散列分区,语法如下(删除表之后重建):
Sql代码:
create table graderecord (
sno varchar2(10), sname varchar2(20), dormitory