사용자 정의 함수는 아래와 같은 이유로 사용을 지양한다.
https://burning-dba.tistory.com/78
그러나 꼭 사용해야 한다면, 아래와 같이 사용하도록 하자.
SELECT DEPTNO
, (SELECT GET_DNAME(E.DEPTNO) FROM DUAL) AS DNAME
FROM EMP E
WHERE SAL >= 2000
SELECT-LIST에 사용한 함수는 메인쿼리 결과 건수만큼 반복 수행되는데, 위와 같이 스칼라 서브쿼리를 덧씌우면 호출 횟수를 최소화할 수 있다. 캐싱 효과 때문이다.
캐싱은 쿼리 단위로 이루어진다. 쿼리를 시작할 때 PGA 메모리에 공간을 할당하고, 쿼리를 수행하면서 공간을 채워나가며, 쿼리를 마치는 순간 공간을 반환한다.
출처: 도서 <친절한 SQL 튜닝>
728x90
'SQL' 카테고리의 다른 글
소트 튜닝 (0) | 2022.04.01 |
---|---|
윈도우 함수 (0) | 2022.03.27 |
옵티마이저의 쿼리 변환(Query Transformation) (0) | 2022.03.23 |
오라클 병렬처리 (0) | 2022.03.19 |
SGA vs PGA (0) | 2022.03.17 |
댓글