pg_execute和pg_query有什么区别?
我对此知之甚少。
pg_execute: Use to execute query with prepare statement.
pg_query: Use to execute query without prepare statement.我说的对吗?
有人能解释更多吗?
发布于 2013-12-06 12:35:55
首先,我要解释一下什么是准备好的陈述。任何查询的执行都必须跨越某些阶段--解析、计划+优化、绑定、执行。前两个阶段的结果是执行计划。如果您用某个名称保存它,那么您将得到一个准备好的语句。你应该这么做是有原因的。一种是重复执行SQL语句的性能。
您可以用语句准备来做准备语句。
postgres=# PREPARE xx(text) AS SELECT * FROM pg_class WHERE relname = $1;
PREPARE您可以通过语句执行执行此准备好的语句。
postgres=# EXECUTE xx('foo');
─[ RECORD 1 ]──┬────────────
relname │ foo
relnamespace │ 2200
reltype │ 16412
reloftype │ 0
relowner │ 16384它类似于
SELECT * FROM pg_class WHERE relname = 'foo'但是,您可以将它用于不同的参数,并且可以节省一些CPU时间,因为解析和规划是不必要的。
因此,pg_execute是执行任何准备好的语句的函数--您必须预先准备好语句。执行语句是类推的。
pg_query用于执行输入为字符串的查询-- "SELECT * FROM .“
https://stackoverflow.com/questions/20423706
复制相似问题