CSQL 로 커맨드 라인에서 SET OPTIMIZATION LEVEL 513 등의 명령어를 수행하여 쿼리플랜을 볼 경우 성능 향상을 위하여, 쿼리 플랜 결과를 캐쉬를 하게 됩니다.
문제는, 이 캐쉬로 인하여, 동일한 수행 계획을 갖는 쿼리의 경우 처음 한번만 쿼리 플랜을 확인 할 수 있는 문제가 있습니다.
(큐브리드 매니저에는 해당하지 않습니다.)
동일한 쿼리를 수행 할 경우에도, 쿼리플랜을 수행 하기 위해서는 다음과 같이 쿼리를 수행 하여야 합니다.
변경된 쿼리를 수행하면 다음과 같이 항상 쿼리 플랜이 출력되는 것을 알 수 있습니다.
문제는, 이 캐쉬로 인하여, 동일한 수행 계획을 갖는 쿼리의 경우 처음 한번만 쿼리 플랜을 확인 할 수 있는 문제가 있습니다.
(큐브리드 매니저에는 해당하지 않습니다.)
동일한 쿼리를 수행 할 경우에도, 쿼리플랜을 수행 하기 위해서는 다음과 같이 쿼리를 수행 하여야 합니다.
원 쿼리 : select * from db_root; |
쿼리플랜을 매 회 확인하기 위해서는 /*+ recompile */ 힌트를 추가하여야 한다. 변경된 쿼리 : select /*+ recompile */ * from db_root; |
변경된 쿼리를 수행하면 다음과 같이 항상 쿼리 플랜이 출력되는 것을 알 수 있습니다.
csql> select /*+ recompile */ * from db_root; Query plan: sscan Query stmt: select db_root."triggers", db_root.charset from db_root db_root
triggers charset
Current transaction has been committed. 1 command(s) successfully processed. |
또한 ;set level 257 과 같은 형태로 하셔도 됩니다.