通过对比分区表和普通表,简单的测试了性能和对分区表存在index时的维护,最后我们不得不说

使用分区表很多时候不一定能提高性能,主要是维护起来方便,如果我们能把访问的数据集中

在一个或者有限的几个分区里,那么性能肯定比访问普通的全表要好,还是那句话

让执行的sql尽可能的少读、少写,这样才是提高sql性能的关键,就像anlinew提到的公式:

T=S/V,其实少读、少写的目的就是减小S...

--创建2个结构完全相同,数据量几乎相同的表,只不过是分区表,一个是普通的heap表,

然后简单的做个访问时的性能对比,从而更好的理解如何合理的使用分区表

SQL> create table t(object_id number,object_name varchar2(30))

2 partition by range(object_id)

3 (

4 partition p1 values less than(2000) tablespace users,

5 partition p2 values less than(4000) tablespace users,

6 partition p3 values less than(6000) tablespace users,

7 partition p4 values less than(8000) tablespace users,

8 partition p5 values less than(maxvalue) tablespace users

9 );

表已创建。

SQL> insert into t select object_id,object_name from dba_objects;

已创建9848行。

SQL> insert into t select * from t;

已创建9848行。

SQL> insert into t select * from t;

已创建19696行。

SQL> insert into t select * from t;

已创建39392行。

SQL> insert into t select * from t;

已创建78784行。

SQL> insert into t select * from t;

已创建157568行。

SQL> insert into t select * from t;

已创建315136行。

SQL> insert into t select * from t;

已创建630272行。

SQL> commit;

提交完成。

SQL> create table t1 tablespace users as select object_id,object_name from dba_o

bjects;

表已创建。

SQL> insert into t1 select *from t1;

已创建9849行。

SQL> insert into t1 select *from t1;

已创建19698行。

SQL> insert into t1 select *from t1;

已创建39396行。

SQL> insert into t1 select *from t1;

已创建78792行。

SQL> insert into t1 select *from t1;

已创建157584行。

SQL> insert into t1 select *from t1;

已创建315168行。

SQL> insert into t1 select *from t1;

已创建630336行。

SQL> commit;

提交完成。

SQL>

oracle视频教程请关注: