看来你的表可能有碎片,如下操作一下吧:·删除所有索引
·alter table xxx move;
·重建所有索引
·analyze table xxx compute statistics for table for all indexes;
·alter table xxx move;
·重建所有索引
·analyze table xxx compute statistics for table for all indexes;
解决方案 »
- 求助:用免安装客户端时,pl/sql developer 可以连接,程序不能连接
- plsql 连接 vpn 下的ORACLE问题!
- oracle trigger for each row 是遍历哪些 行呢
- 小问题,在线等,请高手赐教..........
- 请问这种sql怎么写,太复杂了
- 求统计问题答案:行列置换升级版
- 我想捕捉一个程序向ORACLE发出的SQL的完整语句,具何如何捕捉啊?还是有其它的什么工具啊?多谢
- 问一个简单的问题
- 简单兼送分问题,oracle的登录用户
- 我建立了一个oracle数据库,在企业管理器的console中登陆未成功,后在企业管理器的配置辅助工具中配置,提示无监听,如何配置?(我的十wi
- long raw 数据类型问题? 急救
- 如何把数据库中的视图结构导出来?
再就是在查询语句中加入/*+ first_rows*/后是否会查询提高速?
我的一个查询要求在3个表中关联(其中2个50万条记录;1个5000条记录内)但,查询速度却在30s左右!!!:( 如何才能让其降到10s以内?
附注:我们的系统走的是3层构架,中间件是买得别人的产品,后台用java写的程序
希望各位朋友能够多多指教
谢了先!!!
把索引什么的都干掉,将这个表插到一张临时表里面,看看dba_segments的bytes,比较一下两个表的大小,相差的太多就是碎片的事情。检查一下表空间,看看数据文件有问题没,不行就把数据dmp出来,再重新建立表空间。看看操作系统有问题没。希望能有帮助。
to:要想提高查询速度除....
9i,10g的查询速度跟条件的先后次序关系不大,比以前聪明点了,呵呵。提高查询速度的话主要还是索引的用法再,在么就建分区表吧。
还有,小弟想写要篇ORACLE数据库安全的论文,但不知道要写些什么方面的内容,能给些建议吗?
环境;
oracle所在服务器系统:windows 2000 advanced server
oracle企业版: 9.2.0.1.0 ----sga
共享池:232m
缓冲区高速缓存:696m
大型池:144m
java池:24m
sga 总量:1097.45m
sga 大小:1121。571m 前提条件:
我已经对his_po_match_t;his_po_measure_t都作了表/索引分析
然后把脚本同时在3个sql/plus中执行如下:
SQL> select /*+ RULE*/
2 Nvl(Sum(t3.Gross), 0) gross,Nvl(Sum(t3.Tare), 0) Tare,
3 Nvl(Sum(t3.deduction), 0) deduction,Nvl(Sum(t3.suttle), 0) suttle
4 from HIS_PO_MEASURE_T T3,HIS_PO_MATCH_T T1,PO_YWH_T T2
5 WHERE T2.YWH=T1.TASKCODE
6 and
7 T1.MATCHID=T3.MATCHID
8 AND T1.CANCELFLAG='0'
9 AND T3.CANCEL='0'
10 /**/AND SUTTLE_TIME>=to_date('2005-05-06','yyyy-mm-dd')
11 and SUTTLE_TIME<to_date('2005-06-09','yyyy-mm-dd')
12 and iforder='Y'
13 ;已用时间: 00: 00: 45.06Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=HINT: RULE
1 0 SORT (AGGREGATE)
2 1 NESTED LOOPS
3 2 NESTED LOOPS
4 3 TABLE ACCESS (BY INDEX ROWID) OF 'HIS_PO_MEASURE_T'
5 4 INDEX (RANGE SCAN) OF 'HIS_PO_MEASURE_SUTTLE_TIME'
(NON-UNIQUE)6 3 TABLE ACCESS (BY INDEX ROWID) OF 'HIS_PO_MATCH_T'
7 6 INDEX (UNIQUE SCAN) OF 'HIS_PO_MATCH_MATCHID' (UNI
QUE)8 2 INDEX (UNIQUE SCAN) OF 'PO_YWH_YWH' (UNIQUE)
Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
128889 consistent gets
2477 physical reads
0 redo size
553 bytes sent via SQL*Net to client
503 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processedSQL>
*********************************************
SQL> select /*+INDEX(T3,HIS_PO_MEASURE_SUTTLE_TIME)*/
2 Nvl(Sum(t3.Gross), 0) gross,Nvl(Sum(t3.Tare), 0) Tare,
3 Nvl(Sum(t3.deduction), 0) deduction,Nvl(Sum(t3.suttle), 0) suttle
4 from HIS_PO_MEASURE_T T3,HIS_PO_MATCH_T T1,PO_YWH_T T2
5 WHERE T2.YWH=T1.TASKCODE
6 and
7 T1.MATCHID=T3.MATCHID
8 AND T1.CANCELFLAG='0'
9 AND T3.CANCEL='0'
10 /**/ AND SUTTLE_TIME>=to_date('2005-06-06','yyyy-mm-dd')
11 and SUTTLE_TIME<to_date('2005-07-08','yyyy-mm-dd')
12 and iforder='Y'
13 ;已用时间: 00: 00: 51.05Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=24677 Card=1 Bytes=6
7)1 0 SORT (AGGREGATE)
2 1 NESTED LOOPS (Cost=24677 Card=26084 Bytes=1747628)
3 2 HASH JOIN (Cost=24677 Card=16091 Bytes=965460)
4 3 TABLE ACCESS (BY INDEX ROWID) OF 'HIS_PO_MEASURE_T'
(Cost=23213 Card=16091 Bytes=595367)5 4 INDEX (RANGE SCAN) OF 'HIS_PO_MEASURE_SUTTLE_TIME'
(NON-UNIQUE) (Cost=88 Card=32182)6 3 TABLE ACCESS (FULL) OF 'HIS_PO_MATCH_T' (Cost=1414 C
ard=103172 Bytes=2372956)7 2 INDEX (UNIQUE SCAN) OF 'PO_YWH_YWH' (UNIQUE)
Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
40661 consistent gets
15006 physical reads
0 redo size
555 bytes sent via SQL*Net to client
503 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processedSQL>
*********************************************
SQL> select /*+ FIRST_ROWS*/
2 Nvl(Sum(t3.Gross), 0) gross,Nvl(Sum(t3.Tare), 0) Tare,
3 Nvl(Sum(t3.deduction), 0) deduction,Nvl(Sum(t3.suttle), 0) suttle
4 from HIS_PO_MEASURE_T T3,HIS_PO_MATCH_T T1,PO_YWH_T T2
5 WHERE T2.YWH=T1.TASKCODE
6 and
7 T1.MATCHID=T3.MATCHID
8 AND T1.CANCELFLAG='0'
9 AND T3.CANCEL='0'
10 /**/AND SUTTLE_TIME>=to_date('2005-10-06','yyyy-mm-dd')
11 and SUTTLE_TIME<to_date('2005-11-09','yyyy-mm-dd')
12 and iforder='Y'
13 ;已用时间: 00: 01: 10.00Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=HINT: FIRST_ROWS (Cost=2783 Card=
1 Bytes=67)1 0 SORT (AGGREGATE)
2 1 NESTED LOOPS (Cost=2783 Card=27714 Bytes=1856838)
3 2 HASH JOIN (Cost=2783 Card=17096 Bytes=1025760)
4 3 TABLE ACCESS (FULL) OF 'HIS_PO_MEASURE_T' (Cost=1316
Card=17096 Bytes=632552)5 3 TABLE ACCESS (FULL) OF 'HIS_PO_MATCH_T' (Cost=1414 C
ard=103172 Bytes=2372956)6 2 INDEX (UNIQUE SCAN) OF 'PO_YWH_YWH' (UNIQUE)
Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
30483 consistent gets
24805 physical reads
0 redo size
554 bytes sent via SQL*Net to client
503 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processedSQL>
希望大家能帮我分析一下,告诉我这是为什么?
详细信息http://www.itpub.net/showthread.php...10&pagenumber=1
疑惑有2:
1.分什么我做了表分析后,用cbo的时候,反而会出现全表扫描,就算是不排斥全表扫描方式(因为有些时候全表扫描确会比索引快),但运行的时间依然告诉我cbo不行!!!why???
2.his_po_match_t;his_po_measure_t的数据在50万;po_ywh_t在5000条,为什么查询速度会如此慢???(相同的脚本如果在测试服务器速度会快很多:1-3秒)why???
启动时产生错误信息:
Windows不能在 本地计算机 启动Oracle OLAP 9.0.1.0.1。有关更多信息,查阅系统事件日志。如果这是非Microsoft服务,请与服务商联系,并参考错误代码2。
哪位能给予解决办法吗
可以加大索引表空间,删除重复索引,再不行可以适当加大Sort_area_size