정적 SQL(Static SQL)과 동적 SQL(Dynamic SQL) 비교(ㅇ)

2025. 2. 15. 10:46IT/Oracle

반응형
구분 정적 SQL (Static SQL) 동적 SQL (Dynamic SQL)
정의 SQL 문이 미리 정의되고 컴파일된 후 실행되는 SQL 실행 시점에서 SQL 문이 생성되고 실행되는 SQL
SQL 문 생성 시점 애플리케이션 개발 또는 컴파일 시점 애플리케이션 실행 시점
실행 방식 미리 컴파일된 SQL 문을 실행 실행 시점에서 SQL 문을 조합하여 실행
보안 SQL 인젝션에 강함 (미리 정의된 쿼리 사용) SQL 인젝션 위험이 있음 (입력값을 직접 조합할 경우)
성능 일반적으로 빠름 (미리 컴파일된 계획 사용) 비교적 느림 (매번 SQL 구문을 분석하고 실행 계획을 생성)
유연성 고정된 SQL 문만 실행 가능 다양한 조건과 동적으로 변경되는 SQL 실행 가능

사용예시

  1. 정적 SQL
    • 정해진 구조의 SQL 문을 실행할 때 사용
    • 성능이 중요한 트랜잭션 시스템에서 선호됨
SELECT * FROM employees WHERE department_id = 10;
  1. 동적 SQL
    • 사용자의 입력값에 따라 SQL 문이 변경될 때 필요
    • 다양한 조건을 처리해야 하는 경우 사용
    • 예: 사용자가 선택한 필드만 조회하는 경우 
SET @sql = 'SELECT ' || column_name || ' FROM employees;'; EXECUTE IMMEDIATE @sql;

 

정적 SQL과 동적 SQL 선택 기준

  • 정적 SQL: 보안이 중요하고 성능이 중요한 경우(예: 금융 시스템, 미리 정의된 보고서)
  • 동적 SQL: SQL 문이 실행 중에 결정되어야 하는 경우(예: 검색 필터 적용, 유연한 데이터 조회)

정적 SQL을 기본으로 사용하되, 필요한 경우 동적 SQL을 신중하게 사용해야 합니다.

반응형

'IT > Oracle' 카테고리의 다른 글

오라클 Lock  (0) 2025.02.16
PL/SQL Function / Procedure 실행 오류 확인 방법  (0) 2025.02.15
오라클 UNDO 최소화 및 데이터 저장 전략(ㅇ)  (0) 2025.02.15
Bulk Insert  (0) 2025.02.15
Common Table Expression (CTE)(ㅇ)  (1) 2025.02.14