如何使用Hash分区优化Oracle分析函数(1)(2)
第二步:准备数据,从dba_object中把数据插入到两个表。总共插入数据1610880。
- insert into t_partition_hash select * from dba_objects;
- insert into t_partition_hash select * from dba_objects;
第三步:本采用RANK函数对两个表进行查询。
- begin
- insert into t_rank
- select object_id,
- rank() over (partition by object_type order by object_id) r_object_id,
- rank() over (partition by object_type order by subobject_name) r_subobject_name ,
- rank() over (partition by object_type order by created) r_created,
- rank() over (partition by object_type order by last_ddl_time) r_last_ddl_time ,
- rank() over (partition by object_type order by status) r_object_type
- from t_partition_hash;
- end;
使用hash分区表总共执行5次的运行时间分别为:46.156s,33.39s,40.516s 34.875s 38.938s.
- begin
- insert into t_rank
- select object_id,
- rank() over (partition by object_type order by object_id) r_object_id,
- rank() over (partition by object_type order by subobject_name) r_subobject_name ,
- rank() over (partition by object_type order by created) r_created,
- rank() over (partition by object_type order by last_ddl_time) r_last_ddl_time ,
- rank() over (partition by object_type order by status) r_object_type
- from t_big_table;
- end;
使用非分区表执行5次的执行时间分别为:141.954s,89.656s,77.906s,98.5s,75.906s.
由此可见采用有效的HASH分区表可以有效提升Oracle分析函数中的执行效率。我相信随着数据量的增加,将会有更明显的效果,回头再测试一个项目中遇到的类似问题。
善用Oracle表空间设计提升数据库性能
优化数据库大幅度提高Oracle分析函数的性能
Oracle设置系统参数进行性能优化