개수 파악 용도의 쿼리가 몇 개 있습니다.
with 절을 이용한 뷰 테이블은 모든 쿼리에서 동일하고요.
구조가 간단하게 다음과 같은데, 보시는 분들이 이해가 되실지 모르겠네요....
with A as (
특정 테이블에 조건이 있는 SQL
)
, B as (
동일 (조건만 다름)
)
/* from절 내에 생성된 임시 뷰 테이블 별칭 사용 */
select 1 as case, count(*) cnt
from (select 컬럼
from A t where 조건
and exists (select 1 from B where 컬럼 = t.컬럼)) a, 테이블 b
where 조건
union all
select 2 as case, count(*) cnt
...
where 위와 다른 조건
==============
위의 쿼리는 속도가 한도 끝도 없네요...플랜 보면 임시 뷰 테이블에 풀 스캔 타고요...
아래 쿼리는 속도 문제는 없는데 with절 재활용이 아니구요...
(뭐 당연한거겠지만 아래 쿼리의 속도는 단일 쿼리 각각 2번 돌리는 것보다는 조금 더 걸리긴 합니다.)
==============
/* from절 내에 임시 뷰 테이블 생성 */
select 1 as case, count(*) cnt
from (with ... )
select ...
union all
select 2 as case, count(*) cnt
from (with ... )
select ...