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
'DB > PostgreSQL' 카테고리의 다른 글
[PostgreSQL] WITH ... AS / INSERT INTO ... ON CONFLICT ... DO UPDATE SET ... (0) | 2022.12.26 |
---|