PREPARE
실행을 위한 문을 준비합니다.
PREPARE는 준비된 문을 생성합니다. PREPARE 문이 실행될 때 지정된 문(SELECT, INSERT, UPDATE 또는 DELETE)이 구문 분석, 재작성 및 계획됩니다. 준비된 문에 대해 EXECUTE 명령이 실행될 때 Amazon Redshift는 (지정된 파라미터 값을 기반으로 성능을 개선하기 위해) 쿼리 실행 계획을 선택적으로 수정한 후 준비된 문을 실행할 수 있습니다.
구문
PREPARE plan_name [ (datatype [, ...] ) ] AS statement
파라미터
- plan_name
-
이 특정한 준비된 문에 주어지는 임의의 이름입니다. 단일 세션 내에서 고유해야 하며 후속적으로 이전에 준비된 문을 실행하거나 할당 취소하는 데 사용됩니다.
- DataType
-
준비된 문에 대한 파라미터의 데이터 형식입니다. 준비된 문 자체의 파라미터를 참조하려면 $1, $2 등을 사용하십시오.
- statement
-
임의의 SELECT, INSERT, UPDATE 또는 DELETE 문입니다.
사용 노트
준비된 문은 파라미터를 취할 수 있습니다. 파라미터는 준비된 문이 실행될 때 문으로 대체되어 입력되는 값입니다. 준비된 문에 파라미터를 포함하려면 PREPARE 문에 데이터 형식 목록을 제공하고, 준비되는 문 자체에서 $1, $2의 표기법을 사용하여 위치에 따라 파라미터를 참조합니다. 문을 실행할 때 EXECUTE 문에서 이런 파라미터의 실제 값을 지정합니다. 자세한 내용은 EXECUTE 섹션을 참조하세요.
준비된 문은 현재 세션이 진행되는 기간 동안만 지속됩니다. 세션이 종료되면 준비된 문이 삭제되므로 다시 사용하려면 준비된 문을 다시 만들어야 합니다. 이는 곧 다중 동시 데이터베이스 클라이언트가 단 하나의 준비된 문을 사용할 수는 없다는 의미이기도 하지만, 각 클라이언트는 사용할 준비된 문을 스스로 만들 수 있습니다. DEALLOCATE 명령을 사용하여 준비된 문을 수동으로 제거할 수 있습니다.
준비된 문은 단일 세션을 사용하여 많은 수의 유사한 문을 실행할 때 최대의 성능상 이점이 있습니다. 언급한 바와 같이, 준비된 문을 새로 실행할 때마다 Amazon Redshift는 지정된 파라미터 값을 기반으로 성능을 개선하도록 쿼리 실행 계획을 수정할 수 있습니다. Amazon Redshift가 특정 EXECUTE 문에 대해 선택한 쿼리 실행 계획을 검사하려면 EXPLAIN 명령을 사용합니다.
Amazon Redshift가 쿼리 최적화를 위해 수집하는 통계와 쿼리 계획에 대한 자세한 내용은 ANALYZE 명령을 참조하세요.
예시
임시 테이블을 생성하고 INSERT 문을 준비한 후 실행합니다.
DROP TABLE IF EXISTS prep1; CREATE TABLE prep1 (c1 int, c2 char(20)); PREPARE prep_insert_plan (int, char) AS insert into prep1 values ($1, $2); EXECUTE prep_insert_plan (1, 'one'); EXECUTE prep_insert_plan (2, 'two'); EXECUTE prep_insert_plan (3, 'three'); DEALLOCATE prep_insert_plan;
SELECT 문을 준비한 후 실행합니다.
PREPARE prep_select_plan (int) AS select * from prep1 where c1 = $1; EXECUTE prep_select_plan (2); EXECUTE prep_select_plan (3); DEALLOCATE prep_select_plan;