做查询的时候,加上(+)外连接后会很慢,但是不加有些数据还查不出来,现在的问题是如何能让速度快一些那?而该查的数据都能查询出来(表中的数据很大,并且是多表关联)谁有什么好办法吗?
查询是实时的
查询是实时的
解决方案 »
- 在Ubuntu10.10上安装oracle10.2时候碰到了问题
- 高级复制问题 ORA-04067: 未执行, stored procedure
- oracle9i创建临时表时报错 不知什么原因
- 使用sqlldr导入数据时的 SQL*Loader-605 错误
- oracle字段的截取问题~~急
- oracle和jdk的问题
- 请高手给写一个语句!
- Oracle8.1.7安装在Window XP上的问题
- 各位帮忙看看:一个本论坛里好像从来没彻底坚决过的问题:用sql server的dts导出数据到oracle时:用户“**”不存在,表或视图不存在
- 谁有RapidSQL5.7的下载地址?(高分)
- 把Excel数据导到Oracle如何实现加密//
- ORACLE中发邮件用UTL_SMTP,那么如果SMTP服务器要求密码验证怎么办?
I.STATUS, STATUSCHANGEENTRY.INSTRUMENTSTATUS, I.INSTRUMENT_TYPE_OID, SLOG.END_DATE, I.TYPE_CODE, I.METER_CODE, STOCKROOM.ADMINISTRATOR
FROM STOCKROOM, GOODSRACK,GOODSLOCATION G, STOCKLOG SLOG, STATUSCHANGEENTRY, REQUEST R, INSTRUMENT I
WHERE
STOCKROOM.STOCK_ROOM_OID = GOODSRACK.STOCKROOM_OID(+)
AND GOODSRACK.GOODS_RACK_OID = G.GOODSRACK_OID(+)
AND G.GOODS_LOCATION_OID = SLOG.GOODS_LOCATION_OID (+)
AND SLOG.STOCK_LOG_OID = (SELECT MAX(STOCKLOG.STOCK_LOG_OID) FROM STOCKLOG WHERE STOCKLOG.INSTRUMENT_OID = I.INSTRUMENT_OID)
AND STATUSCHANGEENTRY.STATUS = 0
AND STATUSCHANGEENTRY.INSTRUMENT_OID = I.INSTRUMENT_OID
AND R.REQUEST_OID = I.REQUEST_OID
AND i.division_oid = :1
FILTER
HASH JOIN OUTER 1 147 16
HASH JOIN OUTER 1 132 13
HASH JOIN OUTER 1 115 8
MERGE JOIN CARTESIAN 1 100 5
TABLE ACCESS BY INDEX ROWID JLUSER.STATUSCHANGEENTRY 1 12 1
NESTED LOOPS 1 91 3
NESTED LOOPS 1 79 2
TABLE ACCESS BY INDEX ROWID JLUSER.INSTRUMENT 1 66 1.1
BITMAP CONVERSION TO ROWIDS
BITMAP INDEX SINGLE VALUE JLUSER.IDX_DIVISION_OID
INDEX UNIQUE SCAN JLUSER.REQUEST_PRIMARY_KEY 271 K 3 M
INDEX RANGE SCAN JLUSER.IDX_INSTRUMENTOID_STATCHENTRY 2 1
BUFFER SORT 2 18 4
TABLE ACCESS FULL JLUSER.STOCKROOM 2 18 2
TABLE ACCESS FULL JLUSER.GOODSRACK 34 510 2
TABLE ACCESS FULL JLUSER.GOODSLOCATION 3 K 63 K 4
TABLE ACCESS FULL JLUSER.STOCKLOG 160 2 K 2
SORT AGGREGATE 1 10
TABLE ACCESS FULL JLUSER.STOCKLOG 1 10 2
这是计划
比如STATUSCHANGEENTRY.STATUS = 0 能否先对这个表做过滤然后JOIN,这样能不能做优化呢?
或者对JOIN以后数据量小的表先执行JOIN。