准备语句
PREPARE <identifier> AS <select-query>
预处理语句使得能够创建一个可多次执行的 SQL 语句。与执行语句一起使用时,这通过消除每次执行语句时的语句编译步骤来节省处理器时间。
<标识符> 指定了预编译语句的名称。查询中的参数使用“?”占位符表示;例如:
prepare lookup as select * from t where x=?;
除非显式进行类型转换,否则所有参数都被假定为字符串类型。例如,以下语句允许将整数值替换到查询字符串中:
prepare lookup as select * from t where x=?::integer;
以下示例语句演示了如何定义和使用预编译语句:
create table t(x integer primary key, y integer);
prepare lookup as select * from t where x=?::integer;
prepare lookup2 as select * from t where x=?::integer and y=?::integer;
insert into t values (1,10);
execute lookup(1);
explain execute lookup(1);
execute lookup2(1,10);
explain execute lookup2(1,10);
prepare selfjoin as select * from t as t1 left join t as t2 on t1.y=t2.y;
execute selfjoin();
explain execute selfjoin();
execute selfjoin();