simplylove2014-06-23 17:17:36
我有个特别complex的SQL query cursor, takes a long time (a few hours)to complete. And very often it failed with oracle error "snapshot too old rollback segment too small". 原因是我用的table data 都是changing frequently的。我就决定把里面的每个subquery 都分别写到temp table里,然后在main cursor 里在join these temp tables. 我觉得这样应该能work的。可是reviewer让我证明这样能解决问题。烦死了,query那么大又不是我的错。db 高手们有什么好主意? 除了加 table index外,query还能怎么optimize? 
slow_quick2014-06-23 18:48:54
打出来看看?
Guoluke22014-06-23 19:27:19
加点log语句看看到底那步最耗时,再加以改进
lidongmei2014-06-23 20:49:56
回复:请教oracle db问题
南城胡同串子2014-06-24 00:53:28
这还不简单,弄不出来就别弄了,省事儿了
simplylove2014-06-24 03:02:13
太长了
simplylove2014-06-24 03:06:40
最大的table至少有几百个million rows
simplylove2014-06-24 03:16:51
已经有index了。我们虽然不是data warehouse数据,但数据量很大。再加additional index
simplylove2014-06-24 03:22:21
我觉得只能用temp table了。问DBA也不做声
simplylove2014-06-24 03:26:49
我也想不弄啊,成天串胡同儿多悠闲。可是得养家糊口啊
lidongmei2014-06-24 17:02:52
回复:已经有index了。我们虽然不是data warehouse数据,但数据量很大。再加additional index
chirolike2014-06-25 00:10:27
Using cursor might not be a good idea.
GuoLuke22014-06-25 02:52:05
这就是database本身的问题了,找dba解决
种豆的gua2014-06-25 04:02:30
回复:请教oracle db问题
simplylove2014-07-08 04:25:25
Well it is a real time system and the response time is critical.
simplylove2014-07-08 04:26:52
Adding additional index will probably have negative impact on ou
simplylove2014-07-08 04:30:19
这些都已经相当大了,DBA不给增加了。我试了temp table solution and seems it is workin