옵티마이저가 SQL을 재작성하는 것을 이야기한다. 불필요하게 2번 테이블을 스캔하는 쿼리문을 1번만 스캔하도록 재작성하는 것 등이 포함된다.
쿼리 블록 안으로 밀어 넣어있는 조건들을 밖으로 빼내어 내오는 것을 이야기하며, 이를 다시 다른 쿼리 블록에 Pushdown할 때 사용한다.
쿼리 블록 안, 또는 밖에 있는 조건들을 다른 쿼리문으로 이동시킬 때 발생한다.
조건절 이행이란, A = B 이고, B = C이면 A = C이다. 라는 추론을 통해 새로운 조건절을 내부적으로 생성해주는 쿼리 변환이다. 예를 들어 부서 d, 사원 e 테이블이 있을 때
where d.부서id = :deptid
and e.부서id = d.부서id
e.부서id가 :deptid인 것으로 처리하도록 하는 것이 조건절 이행이다.