h1.WITH절을사용할때 주의해야할점은?
h3.동시성이 높은 경우 MATERIALIZE 동직방식은 피하자
With 절을 처리하는 과정에서 Materialize 동작방식은 Global Temporary Table 에 With 절의 SQL 에서 주줄한 데이터를 저장하고 이 저장 된 데이터를 읽어 처리해야 하기 때문에 컨트롤 파일을 읽게 된다 .
그러므로 동시성이 높은 프로그램에 성능을 개선할 목적으로 With 절을 사용하고 Materialize 동작방식을 적용한다면 오히려 control file sequential read 대기 이벤트를 대기하는 세선이 급증하여
오히려 DB 서버 성능에 악영향을 미칠 수 있으므로주의 해야한다.
- control file sequential read WAIT EVENT 발생
h3.추출 건수가 많은 경우 WITH절은 피하자
With 절이 Materialize 동작방식으로 사용될 경우, With절에서 추출한 많은 데이 터를 Global Temporary Table 에 저장해야 하고 또한 With 절의 데이터를 읽어야 할 때도 많은 데이터를 처리해야 하므로, With 절을 사용하여도 성능이 크게
개선이 되지 않을 수 있기 때문
그렇기에 한번 데이터 추출하는데에는 오랜시간이 걸리나 추출건수가 적을경우에 쓰는것이 좋다.
h3.WITH절 선언 부분은 SQL의 가장앞에 위치시키자
WITH 절의 명시가 맨앞이 아닌 뒷쪽에 존재하게 되면 데이터의 정확도에 문제가 발생하는 경우가 있다.
h3.WITH절에 동작방식 힌트를추가하자
SQL 의 구조가 변경되었다고 하더라도 실제 수행되는 동작방식은 동일하거나 성능개선의 목적과 부합하지 않는 동작방식으로 수행될 수 있기 때문