본문 바로가기

DB

[PostgreSQL] PREPARE

728x90

PostgreSQL은 공유 SQL 영역이 없고, 매 SQL 수행 시 마다 파싱이 발생 된다.
자주 사용되거나, 특별한 설정 값을 가지고 수행될 필요가 있는 SQL의 경우는 PREPARE 명령을 이용하여 SQL문과 PLAN을 세션 프로세스에 저장해서 사용할 수 있다.

PREPARE fooplan (int, text, bool, numeric) AS
    INSERT INTO foo VALUES($1, $2, $3, $4);
EXECUTE fooplan(1, 'Hunter Valley', 't', 200.00);
PREPARE usrrptplan (int) AS
    SELECT * FROM users u, logs l WHERE u.usrid=$1 AND u.usrid=l.usrid
    AND l.date = $2;
EXECUTE usrrptplan(1, current_date);

두번째 매개변수의 데이터 유형이 지정되지 않았기 때문에 $2가 사용되는 문장에서 추론된다.

[출처]
https://www.postgresql.org/docs/9.3/sql-prepare.html
https://bstar36.tistory.com/306

728x90