同样的数据库,不同的oracle版本;查询速度差别很大? 在一台9i的机器上exp出数据库文件;再在另外一台10G的机上导入;结果发现;原来在9i里查询需要8秒左右的;在10G里却只要0.3XX秒???这个是什么原因呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你在oracle9i里面做了statistic信息的收集了吗?你比较了两者的执行计划了吗?同时,你对两个不同版本数据库的表的数据存储结构进行剖析了吗?出现不同是很正常的事情,同一个版本也会出现类似的情况,关键是你要对语句后面发生的事情进行剖析 执行计划不一样;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 1:内存?我的个人pc笔记本才2G; 9i的服务器起码有8G;2:都有索引的啊;3:数据总量大约在X万条. 说实在的;我只是建立几张表;然后建立几个经常使用的字段为索引;别的没怎么弄,也不知道怎么做.同样的在sql server 就快.难道9i 什么都需要手动修改? >>结果发现;原来在9i里查询需要8秒左右的; >>在10G里却只要0.3XX秒??? 执行计划 这位大哥,看完行么;我不是发上来了;只是csdn不让上传图片;我发的是文字版的 你看看oracle 的内存结构,不是看服务器内存的大小,你看一下 SGA,PGA的内存结构你再查一下物理数据分布,你的索引都没有被用起来,你是不是没有做过 dbms_stats.gather_table_stats(....)这个过程 关于oracle数据库凭借问题 怎样将日期型数据转换成字符串 ,不是在sql语句中转换 各位大哥帮帮忙 oracle 9i标准版能不能装rac ?急救 如何把datafile强行加载到数据库中 共享服务器?专用服务器? PL\SQL, 用insert语句插入一条包含&的记录,实际插入内容不一致,怎么解决? !!! 急急急:如何把sql server的数据库或者表 转换成 oracle的数据库 oracle在xp中的奇怪问题 请教:触发器是否能select本表的字段?十分着急,希望大家能指教。 谁有SQL Navigator的正式注册码? 如何在sql的from后面加条件 为什么没有权限??
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
1:内存?我的个人pc笔记本才2G;
9i的服务器起码有8G;
2:都有索引的啊;
3:数据总量大约在X万条.
别的没怎么弄,也不知道怎么做.
同样的在sql server 就快.难道9i 什么都需要手动修改?
>>在10G里却只要0.3XX秒??? 执行计划
这位大哥,看完行么;我不是发上来了;只是csdn不让上传图片;我发的是文字版的
你看看oracle 的内存结构,不是看服务器内存的大小,你看一下 SGA,PGA的内存结构
你再查一下物理数据分布,你的索引都没有被用起来,你是不是没有做过 dbms_stats.gather_table_stats(....)这个过程