再聊聊分区表

     前一阵子写了一点有关分区表的东西(http://www.cnblogs.com/wingsless/archive/2012/02/11/2347111.html)。我们的项目限于甲方的抠门,分配给我们的磁盘空间相当的小,因此我们的项目中并不习惯使用索引这个好用的东西,因为索引也是要耗用很大的空间的,有的时候索引占据的空间比数据表还要大。于是我们约定俗成的使用了分区表,而且很多同事认为分区表就相当于建立了很多很多的小表一样。事实,确实如此吗?

     建立一张分区表test1,按照month列进行分区,数据量大概在1200万左右,201205这个分区中有4194304条记录。

     建立一张表test_201205,结构和test1一样,只不过只有test1这个表的一部分数据,也就是存在201205这个partition中的所有数据,4194304条记录。

     对两张表analyze,这样一来就保证了oracle能正确的生成执行计划。

     首先看看分区表的执行计划:

    

       非常好的使用了分区条件。

       接下来统计下test_201205的执行计划,如图:

      

       由此可以看出,物理存在的表还是要快一点,但是这个差异已经不大了。

       但是有一个有意思的现象,如果把小表中的查询条件加上,就会发生有意思的变化:

     

       加上了一个无关紧要的条件,Cost就变成了和分区表一样的数值。这是为什么,我还是以后慢慢探究吧。

       从我以上的探究和过去的博文中的研究可以看出来,分区表在某些时候还是比较具有优越性的。

       但是空分区还是要占据空间的。其他的,以后慢慢研究吧。

    

posted @ 2012-08-06 22:07  wingsless  阅读(2090)  评论(2编辑  收藏  举报