pg_execute和pg_query之间的区别

时间:2013-12-06 12:16:14

标签: php postgresql

pg_execute和pg_query之间有什么区别?

我对此知之甚少。

pg_execute: Use to execute query with prepare statement.

pg_query: Use to execute query without prepare statement.

我是对的吗?

任何人都可以解释更多吗?

1 个答案:

答案 0 :(得分:2)

首先我要解释一下准备好的陈述。任何查询执行都必须跨越某些阶段 - PARSING,PLANNING + OPTIMIZATION,BINDING,EXECUTION。前两个阶段的结果是执行计划。如果您使用某个名称保存它,那么您将获得一个准备好的声明。有一些原因,为什么你应该这样做。一个是重复执行SQL语句的性能。

您可以使用语句PREPARE执行预准备语句。

postgres=# PREPARE xx(text) AS SELECT * FROM pg_class WHERE relname = $1;
PREPARE

您可以通过语句EXECUTE

执行此准备语句
postgres=# EXECUTE xx('foo');
─[ RECORD 1 ]──┬────────────
relname        │ foo
relnamespace   │ 2200
reltype        │ 16412
reloftype      │ 0
relowner       │ 16384

类似于

SELECT * FROM pg_class WHERE relname = 'foo'

但是,您可以将它用于不同的参数,并且可以节省一些CPU时间,因为不需要PARSING和PLANNING。

所以pg_execute是执行任何准备好的语句的函数 - 你必须先准备好准备好的语句。它类似于EXECUTE语句。

pg_query用于以字符串形式输入的执行查询 - “SELECT * FROM ....”