Static SQL이란, 어떻게 데이터베이스에 접근할지가 미리 정의되는 형태의 SQL으로, SQL 구문이 정적으로 컴파일 시점에 정의되기 때문에 precompile시 Syntax, Sematics체크가 가능하다.
Dynamic SQL이란, 런타임에서 사용자의 입력 값에 따라 동적으로 SQL 구문을 생성하여 실행하는 방식의 SQL로, 동적으로 처리하기 위해 문자열 변수를 활용하고 런타임 시 구문이 확정된다는 특징을 가지고 있다. Static SQL과 달리 런타임 시에 사용자로부터 SQL문의 일부 혹은 전체를 입력 받아 실행할 수 있기 때문에 precompile시 Syntax, Sematics체크가 불가능하고 바인드 변수를 사용할 수 있다는 특징을 가지고 있다.
각 방식은 서로 다른 장단점을 가지고 있다.
동적 SQL의 경우 구현이 유연하고, 쿼리를 재사용 할 수 있다는 개발 측면의 장점이 있지만 난이도가 그만큼 증가하고 유지 보수성이 저하되고, 안정성이 낮고 실행 계획을 예측하기 어렵다는 단점도 존재한다. 그 반면에 정적 SQL은 유연하지 않다는 단점이 있지만, 런타임 전에 접근 방식이 정의가 되므로 최적화가 더 잘되기 때문에 동적 SQL보다 빠르고 효과적이라는 장점이 있다.
정리하자면 동적 SQL이 더 유연하지만, 정적 SQL이 더 빠르고 효과적이다.
-References
http://wiki.gurubee.net/display/DBSTUDY/Static+vs.+Dynamic+SQL (구루비 지식창고 / Static vs. Dynamic SQL)
https://blog.daum.net/ipajama/133 (pajama / Static vs. Dynamic SQL)
https://blog.naver.com/santalsm/221601113464 (이성몽 /[2-3] 동적 SQL 개념, 장점, 단점에 대해 설명하시오)
https://www.geeksforgeeks.org/difference-static-dynamic-sql/ (geeksforgeeks / Difference between Static and Dynamic SQL)
'학교 공부 > 데이터베이스' 카테고리의 다른 글
동시성 제어 방식 (Concurrency control) : Lock-based protocols (1) | 2021.09.15 |
---|---|
오라클의 조인 타입 / 표준 조인과 비표준 조인의 차이점 (0) | 2021.05.05 |
1.트랜잭션의 4대 특징, ACID (2) | 2021.05.05 |
DB 인덱스와 Join (0) | 2021.04.15 |
RDBMS의 연산과 키 (0) | 2021.04.15 |