oracle - SQL Optimization: query table with different where clauses -


i have following sql query:

select (     select sum(c1)     t2     t1.c1 = t2.c1     , t2.c3 = 'new'     , t2.c4 = trunc(sysdate)     , t2.c5 = 'n' ) sum, (     select sum(c2)     t2     t1.c1 = t2.c1     , t2.c3 = 'old'     , t2.c4 = trunc(sysdate) ) sum2 t1 t1.c2 in ('dummy', 'dummy2') 

so, t2 table queried multiple times different where clauses each time. t2 table large , takes time results. query table once different where clauses , sum results..

is possible anyway? got suggestion use in sql, no success execution time

you have several sum calls on case expression in t2, , join t1:

select sum1, sum2   t1 join   (select c1,                 sum(case when c3 = 'new' ,                               c4 = trunc(sysdate) ,                               c5 = 'n' c1                          else null end) sum1,                sum(case when c3 = 'old' ,                               c4 = trunc(sysdate) c2                          else null end) sum2           t2) t2 on t1.c1 = t2.c1  t1.c2 in ('dummy', 'dummy2') 

edit: common conditions in case expressions (i.e., c4 = trunc(sysdate)) can extracted where clause, should provide performance gain:

select sum1, sum2   t1 join   (select c1,                 sum(case when c3 = 'new' , c5 = 'n' c1                          else null end) sum1,                sum(case when c3 = 'old' c2                          else null end) sum2           t2          c4 = trunc(sysdate)) t2 on t1.c1 = t2.c1  t1.c2 in ('dummy', 'dummy2') 

Comments

Popular posts from this blog

How to connect android app to App engine -

gcc - MinGW's ld cannot perform PE operations on non PE output file -

php - display validation error message next to the textbox in codeigniter -