[Oracle] 오라클의 실행계획

반응형

안녕하세요, 우리노트 Benjamin입니다.


오라클을 사용하다보면 정말 개발자를 찬양하게 만드는 경우들이 종종 있습니다. 그 예를 하나 살펴 보겠습니다.


# 아래 쿼리의 결과 두가지는 동일한 결과를 리턴합니다. 당신이라면 어떤 쿼리를 선택하겠습니까?

   

SQL> select * 

from emp

where sal >= 1000 and sal <=1500

   

SQL> select *

from emp

where sal between 1000 and 1500

   

set autot on 으로 하고 실행 계획을 확인해보면 두쿼리 모두 

sal >= 1000 and sal <=1500 로 필터링 되는 것을 확인할 수 있습니다.

   

즉 between은 오라클 내부에서 부등식으로 바뀌어 처리됩니다.

   

그렇다면 between은 더 성능이 나쁜 쿼리문일까요?

   

오라클 내부에는 다양한 Transformation 기능들이 있습니다. 

사용자가 직접 부등식을 써서 지정하면 이러한 Transformation 기능을 거치지 않고 처리되는 것입니다.

   

어떠한 경우는 이러한 transformation 을 통하여 더 좋은 성능이 구현되는 경우도 있습니다.

   

즉, 사용자가 최적의 실행계획을 정확히 알고 있지 않다면 그냥 오라클에게 맡기는 편이 성능 향상에 도움이 된다는 것입니다.


댓글

Designed by JB FACTORY