select
code,
getAmount1(ac.code) ,
getAmount2(ac.code) ,
getAmount3(ac.code) ,
getAmount4(ac.code)
from acount ac
其中getAmount1()那几个方法是写好的函数 ,方法有点复杂加上acount表数据也不少(10万条级) 上面的sql大概用了15秒执行完毕。
我想取出getAmount1(ac.code) ,getAmount2(ac.code) , getAmount3(ac.code) , getAmount4(ac.code) 金额为总和大于0的内容
于是在后面我加上了 where getAmount1(ac.code)+getAmount2(ac.code)+ getAmount3(ac.code)+ getAmount4(ac.code) 〉0
发现效率非常的差,执行10分钟未果。又将sql改为
select * from
(
select
code,
getAmount1(ac.code) ,
getAmount2(ac.code) ,
getAmount3(ac.code) ,
getAmount4(ac.code) ,
getAmount1(ac.code)+getAmount2(ac.code)+ getAmount3(ac.code)+ getAmount4(ac.code) amount1234
from acount ac
) where amount1234>0
结果执行十分钟依然未果 ,但是单独执行其中兰字部分还是十几秒就能过 我不明白是何处消耗了效率 ,请高手们指点。
code,
getAmount1(ac.code) ,
getAmount2(ac.code) ,
getAmount3(ac.code) ,
getAmount4(ac.code)
from acount ac
其中getAmount1()那几个方法是写好的函数 ,方法有点复杂加上acount表数据也不少(10万条级) 上面的sql大概用了15秒执行完毕。
我想取出getAmount1(ac.code) ,getAmount2(ac.code) , getAmount3(ac.code) , getAmount4(ac.code) 金额为总和大于0的内容
于是在后面我加上了 where getAmount1(ac.code)+getAmount2(ac.code)+ getAmount3(ac.code)+ getAmount4(ac.code) 〉0
发现效率非常的差,执行10分钟未果。又将sql改为
select * from
(
select
code,
getAmount1(ac.code) ,
getAmount2(ac.code) ,
getAmount3(ac.code) ,
getAmount4(ac.code) ,
getAmount1(ac.code)+getAmount2(ac.code)+ getAmount3(ac.code)+ getAmount4(ac.code) amount1234
from acount ac
) where amount1234>0
结果执行十分钟依然未果 ,但是单独执行其中兰字部分还是十几秒就能过 我不明白是何处消耗了效率 ,请高手们指点。
sqlplus xx/xx@xx
SQL>SET AUTOTRACE ON
SQL>输入sql语句
(
select
code,
getAmount1(ac.code) a,
getAmount2(ac.code) b,
getAmount3(ac.code) c,
getAmount4(ac.code) d,
a+b+c+d amount1234
from acount ac
) where amount1234>0
这个试试看