
캐싱되는 영역 = 라이브러리 캐시(oracle) , 프로시저 캐시(sql server)
graph TD;
A[SQL]-->B[Syntax check];
B-->C[Semantic check];
C-->D[Access auth check];
D-->E[Cache];
E-->F[Execution plan];
E-->G[Soft parsing];
E-->H[Hard parsing];
F[Optimization];
G-->I[Execution];
H-->F-->I;
DB[DB I/O];
F-->DB;
SELECT * FROM A
JOIN B ON A.id = B.id
JOIN C ON B.id = C.id
JOIN D ON C.id = D.id
JOIN E ON D.id = E.id;
위와같은 SQL 을 날릴 시 5! 의 실행계획 + 각 단계별 Join방식 을 평가해야됨으로 굉장히 무거운 연산입니다.
해당 평가계획에 대한 캐싱을 효과적으로 이용하기 위해 이전에 지우님이 설명 해 주신대로 바인드 변수를 이용하면 좋습니다.