在一台9i的机器上exp出数据库文件;
再在另外一台10G的机上导入;
结果发现;原来在9i里查询需要8秒左右的;
在10G里却只要0.3XX秒???
这个是什么原因呢
?

解决方案 »

  1.   

    你在oracle9i里面做了statistic信息的收集了吗?你比较了两者的执行计划了吗?同时,你对两个不同版本数据库的表的数据存储结构进行剖析了吗?出现不同是很正常的事情,同一个版本也会出现类似的情况,关键是你要对语句后面发生的事情进行剖析
      

  2.   

    执行计划不一样;9i的服务器 需要很长时间;郁闷不让上传图片了...
    10G上的计划
    SELECT STATEMENT, GOAL = ALL_ROWS 6713 18066 31669698
     VIEW QZFC VIEW_FC_PREREGPRINT 6713 18066 31669698
      UNION-ALL
       HASH JOIN 3576 13489 24158799
        TABLE ACCESS FULL REGISTER R_PREREG 84 8387 8093455
        HASH JOIN 2567 13488 11141088
         HASH JOIN 1986 13488 1213920
          TABLE ACCESS FULL QZFC 预发明细表 14 13488 337200
          TABLE ACCESS FULL QZFC 房间表 1966 339819 22088235
         TABLE ACCESS FULL QZFC 预发表 85 12110 8912960
       HASH JOIN 3137 4577 8211138
        HASH JOIN 2481 4577 3794333
         TABLE ACCESS FULL QZFC 预发共表 9 4109 702639
         HASH JOIN 2471 13488 8875104
          HASH JOIN 1986 13488 1213920
           TABLE ACCESS FULL QZFC 预发明细表 14 13488 337200
           TABLE ACCESS FULL QZFC 房间表 1966 339819 22088235
          TABLE ACCESS FULL QZFC 预发表 85 12110 6878480
        TABLE ACCESS FULL REGISTER R_PREREG 84 8387 8093455-----------
    9i服务器的 计划
    SELECT STATEMENT, GOAL = ALL_ROWS Cost=3890 Cardinality=18871 Bytes=33080863
     VIEW Object owner=QZFC Object name=VIEW_FC_PREREGPRINT Cost=3890 Cardinality=18871 Bytes=33080863
      UNION-ALL
       HASH JOIN Cost=1960 Cardinality=14292 Bytes=25596972
        TABLE ACCESS FULL Object owner=REGISTER Object name=R_PREREG Cost=37 Cardinality=8785 Bytes=8477525
        HASH JOIN Cost=1419 Cardinality=14292 Bytes=11805192
         MERGE JOIN Cost=916 Cardinality=14291 Bytes=1286190
          SORT JOIN Cost=826 Cardinality=346468 Bytes=22520420
           TABLE ACCESS FULL Object owner=QZFC Object name=房间表 Cost=826 Cardinality=346468 Bytes=22520420
          SORT JOIN Cost=90 Cardinality=14291 Bytes=357275
           TABLE ACCESS FULL Object owner=QZFC Object name=预发明细表 Cost=6 Cardinality=14291 Bytes=357275
         TABLE ACCESS FULL Object owner=QZFC Object name=预发表 Cost=37 Cardinality=13415 Bytes=9873440
       HASH JOIN Cost=1930 Cardinality=4579 Bytes=8214726
        HASH JOIN Cost=1588 Cardinality=4579 Bytes=3795991
         TABLE ACCESS FULL Object owner=QZFC Object name=预发共表 Cost=5 Cardinality=4298 Bytes=734958
         HASH JOIN Cost=1328 Cardinality=14292 Bytes=9404136
          MERGE JOIN Cost=916 Cardinality=14291 Bytes=1286190
           SORT JOIN Cost=826 Cardinality=346468 Bytes=22520420
            TABLE ACCESS FULL Object owner=QZFC Object name=房间表 Cost=826 Cardinality=346468 Bytes=22520420
           SORT JOIN Cost=90 Cardinality=14291 Bytes=357275
            TABLE ACCESS FULL Object owner=QZFC Object name=预发明细表 Cost=6 Cardinality=14291 Bytes=357275
          TABLE ACCESS FULL Object owner=QZFC Object name=预发表 Cost=37 Cardinality=13415 Bytes=7619720
        TABLE ACCESS FULL Object owner=REGISTER Object name=R_PREREG Cost=37 Cardinality=8785 Bytes=8477525
      

  3.   


    1:内存?我的个人pc笔记本才2G;
          9i的服务器起码有8G;
    2:都有索引的啊;
    3:数据总量大约在X万条.
      

  4.   

    说实在的;我只是建立几张表;然后建立几个经常使用的字段为索引;
    别的没怎么弄,也不知道怎么做.
    同样的在sql server 就快.难道9i 什么都需要手动修改?
      

  5.   

    >>结果发现;原来在9i里查询需要8秒左右的; 
    >>在10G里却只要0.3XX秒??? 执行计划
      

  6.   


    这位大哥,看完行么;我不是发上来了;只是csdn不让上传图片;我发的是文字版的
      

  7.   


    你看看oracle 的内存结构,不是看服务器内存的大小,你看一下 SGA,PGA的内存结构
    你再查一下物理数据分布,你的索引都没有被用起来,你是不是没有做过 dbms_stats.gather_table_stats(....)这个过程