有一张大表,我通过在线重定义的方式对其进行列表分区后,发生耗费、基数、cpu耗费都变大了,这是怎么回事?
    
    在线重定义后,原非分区表的那张表变成了分区表,在同样的条件下,分区后比分区前耗费都变大了,而且两种情况都走了索引,分区表走了局部索引,原来的那张非分区表(我备份了原表)也走了索引。可是分区表的耗费高多了,基本是分区前的3倍。    然后,我直接又建了张分区表,表结构与在线重定义时建的临时用的表一样,然后,直接将我备份表的数据插进去(不采用在线重定义)。完成后,我发现这张表的效率在两样的情况下比非分区要快,无论从哪个方面看,
耗费、基数、cpu耗费、io等等都变小了    两张分区表我只是采用的转移数据的方式不同,然后表名不同,其余的都是一模一样,索引都一样。可是这两张表在同样的查询条件下效率却差了好几倍,差不多是5倍了,这是怎么回事呢    现在无论我怎么弄,都一样,重新备份一张表再用在线重定义,结果还是一样。索引换成全局、索引再分区、重新做表分析这些方法都没用。结果还是一样。
     各位高手这是怎么回事呢?在线重定义感觉很方便,可是为什么会出现这种情况呢?     (不好意思,积分是有点少,相信大家估计也是在意的这个,大家共同探讨、学习。)     
     oracle在线重定义分区后查询效率变慢

解决方案 »

  1.   

    嗯,可能出在索引上。
    1、索引碎片;
    2、cluster factor;
      

  2.   

    这样的问题,上awr对比报告,直接明了
      

  3.   

    发现在csdn只要问点难点的东西就没人能回?大神们都去哪啦
      

  4.   

    不要说这些打击人的话啊,大家都要工作的,不可能天天跑这里来看帖子。
    重建索引试试。
    另外,请楼上的仁兄说说,这种问题,通过awr如何看呢?
      

  5.   

    不好意思啊,各位,非常抱歉,你们能来看一下,小弟非常感谢。估计是环境的原因吧,反正现在换了个新环境,试试后前后对比差不多了。索引重建过,效率差不多,其实oracle文档也说过,分区不是为了提高效率的,是为了方便dba管理的。分后有出入估计也就很正常了。