정적 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 등을 활용하여 보안 강화 필요