Post

<오라클 성능 고도화 원리와 해법2> Ch04-08 공통 표현식 제거

오라클 성능 고도화 원리와 해법2 - Ch04-08 공통 표현식 제거

같은 조건식이 여러 곳에서 반복 사용될 경우, 오라클은 해당 조건식이 각 로우당 한 번씩만 평가되도록 쿼리를 변환한다. 이를 ‘공통 표현식 제거’라고 하며, _eliminate common_subexpr 파라미터를 통해 제어한다.

예를 들어, 위와 같이 deptno에 대한 조인 조건과 job 컬럼에 대한 필터 조건을 중복 기술하면 이에 대한 비교 연산도 두 번씩 일어난다. 이를 피하려고 옵티마이저는 쿼리를 아래와 같은 형태로 변환한다.

1
2
3
4
select * from emp e, dept d
where e.deptno = d.deptno
and e.job = 'CLERK'
and (d.loc = 'DALLAS' or e.sal >= 1000)

비교 연산을 덜 하게 된 것도 의미가 있지만, 새로운 인덱스 액세스 조건이 만들어졌다는 사실이 더 중요하다.

This post is licensed under CC BY 4.0 by the author.