通过对比分区表和普通表,简单的测试了性能和对分区表存在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视频教程请关注:http://u.youku.com/user_video/id_UMzAzMjkxMjE2.html