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
Post a Comment