728x90
정적 SQL (Static SQL)
정적 SQL은 컴파일 시에 SQL 쿼리가 결정되는 방식
즉, 코드가 실행되기 전에 쿼리가 고정되어 있어서, 데이터베이스에 대한 요청이 안변함.
주로 프로그램의 소스 코드에 직접 작성되고, 컴파일 과정에서 SQL 문이 확인된다.
DECLARE
v_name VARCHAR2(100);
BEGIN
SELECT name INTO v_name FROM employees WHERE id = 1;
DBMS_OUTPUT.PUT_LINE('Employee Name: ' || v_name);
END;
동적 SQL (Dynamic SQL)
동적 SQL은 실행 시점에 SQL 쿼리가 생성되는 방식.
사용자의 입력이나 조건에 따라 쿼리가 변화할 수 있다.
이를 통해 더 유연하고 다양한 데이터 요청이 가능하다
DECLARE
v_sql VARCHAR2(200);
v_name VARCHAR2(100);
BEGIN
v_sql := 'SELECT name FROM employees WHERE id = :id';
EXECUTE IMMEDIATE v_sql INTO v_name USING 1;
DBMS_OUTPUT.PUT_LINE('Employee Name: ' || v_name);
END;
정적 SQL
장점
- 성능: 컴파일 시에 SQL 쿼리가 고정되어 있기 때문에, 실행 시점에 최적화된 계획을 사용. 일반적으로 더 빠른 성능을 제공.
- 안정성: 코드가 고정되어 있으므로, 예상치 못한 오류가 발생할 가능성 적음. 디버깅과 유지 관리가 용이.
- 보안: SQL Injection 안전 사용자가 직접 쿼리를 변경할 수 없기 때문.
단점
- 유연성 부족: 쿼리가 고정되어 있기 때문에, 실행 시점에 조건에 따라 쿼리를 변경 불가
- 코드 중복: 다양한 조건에 따른 쿼리를 작성할 경우, 비슷한 SQL 문을여러번 작성
동적 SQL
장점
- 유연성: 사용자 입력이나 조건에 따라 쿼리를 동적으로 생성, 다양한 데이터 요청 가능
- 코드 재사용: 같은 SQL 코드 블록을 다양한 조건으로 사용 가능
단점
- 성능 저하: 매번 SQL 문을 동적으로 생성하고 실행 계획을 새로 만들기 때문에, 성능이 저하 (실제로 많은 실행 단계실시)
- 오류 처리: 코드가 복잡해지면서, SQL 문법 오류나 논리적 오류가 발생할 가능성 고려
- 보안 위험: SQL Injection 공격의 위험. 이를 방지하기 위해서는 반드시 입력 값을 검증 필수
요약
- 정적 SQL: 성능과 안정성이 뛰어나지만 유연성이 떨어짐.
- 동적 SQL: 유연성이 뛰어나지만 성능 저하와 보안 위험이 있음.
728x90
'2.2 DB > DB개념' 카테고리의 다른 글
[DB] 데이터 모델링 (4) | 2024.09.24 |
---|---|
[DB] 데이터, 정보, 지식 , 지혜 (DIKW) (0) | 2024.08.29 |
댓글