Skip to main content

정적 SQL과 동적 SQL

· 3 min read

정적 SQL과 동적 SQL 개념 비교

정적 SQL동적 SQL
애플리케이션에 하드 코딩되어 런타임 시 변경되지 않는 SQL런타임 시점에 사용자로부터 SQL 문의 일부 또는 전부를 입력받아 실행되는 SQL
  • 정적 SQL은 컴파일 전 단계에서 구문분석, 유효 오브젝트 여부확인 등 체크가 가능하지만 동적 SQL은 불가

정적 SQL과 동적 SQL 상세 비교

정적 SQL과 동적 SQL 구현 비교

구분정적 SQL동적 SQL
구문컴파일 시점에 구문 및 의미 체계 체크 가능실행 시점에 구문이 확정되므로 사전 체크 불가
최적화사전 컴파일로 최적화 가능런타임 최적화가 어려움
보안주로 컴파일 타임에 보안 검토 가능사용자 입력 검증 필요, 보안 관리 복잡

정적 SQL과 동적 SQL 특징 비교

구분정적 SQL동적 SQL
유연성낮음, 고정된 쿼리 구조높음, 다양한 조건에 따라 쿼리 변경 가능
보안상대적으로 안전함SQL 인젝션 및 보안 취약점
성능빠르고 최적화 가능실행 시점에 최적화가 어려움
사용 사례고정된 데이터 조회나 트랜잭션 처리사용자 입력 기반의 동적 데이터 조회 및 처리
캐싱 효율높음낮음
장점빠른 속도, 쿼리 해석 사전 수행유연한 SQL 구조, 코딩 양 최소화
단점데이터 분포에 따른 성능 저하반복적 쿼리 파싱에 따른 성능 저하
  • 동적 SQL 사용시 WAF, Stored Procedure, Prepared Statement 등을 활용하여 보안 강화 필요