第二章 SQL命令参考-PREPARE
来源:互联网 发布:淘宝首页模板代码 编辑:程序博客网 时间:2024/05/22 04:24
PREPARE
Prepare astatement for execution.
概要
PREPARE name [(datatype [,...])] AS statement
描述
PREPARE创建一个准备好的语句,可能带有未绑定的参数。准备语句是可用于优化性能的服务器端对象。随后可以使用对其参数的绑定来执行准备好的语句。 Greenplum数据库可能会选择对同一准备语句的不同执行情况的查询进行复制。
Prepared语句可以使用参数:在执行语句时被替换的值。当创建准备好的语句时,请参考按位置的参数,使用$ 1,$ 2等。可以指定相应的参数数据类型列表。当参数的数据类型未指定或被声明为未知时,从使用参数的上下文推断该类型(如果可能)。执行语句时,在EXECUTE语句中指定这些参数的实际值。
准备的语句仅在当前数据库会话期间持续。会话结束时,已准备好的语句被遗忘,因此必须重新使用该语句才能再次使用。这也意味着单个准备语句不能被多个同时的数据库客户端使用;然而,每个客户端都可以创建自己准备的语句来使用。可以使用DEALLOCATE命令手动清理准备好的语句。
当单个会话用于执行大量类似语句时,准备语句具有最大的性能优势。如果语句对于计划或重写是复杂的,则性能差异尤为显着,例如,如果查询涉及许多表的连接或需要应用若干规则。如果该语句的计划和重写相对简单但执行起来相对昂贵,则预处理语句的性能优势将不那么明显。
parameter
name
给这个特定的准备声明给出的任意名称。 它在单个会话中必须是唯一的,随后用于执行或取消分配先前准备好的语句。
datatype
准备语句的参数的数据类型。 如果特定参数的数据类型未指定或被指定为未知,则将从使用该参数的上下文推断出。 要在准备好的语句本身中引用参数,请使用$ 1,$ 2等。
statement
任何SELECT,INSERT,UPDATE,DELETE或VALUES语句。
Notes
在某些情况下,为准备的语句生成的查询计划将低于如果语句已经提交并正常执行的选择查询计划。 这是因为当计划语句并且计划程序尝试确定最佳查询计划时,语句中指定的任何参数的实际值将不可用。 Greenplum数据库收集关于表中数据分布的统计信息,并且可以在语句中使用常量值来猜测执行该语句的可能结果。 由于在使用参数编制准备语句时,此数据不可用,所选择的计划可能不是最佳的。 要查看Greenplum数据库已经为准备好的语句选择了查询计划,请使用EXPLAIN。
有关查询计划和Greenplum数据库收集的统计信息的更多信息,请参阅ANALYZE文档。
示例
Create a preparedstatement for an INSERT statement, andthen execute it:
PREPAREfooplan (int, text, bool, numeric) AS INSERT INTO
fooVALUES($1, $2, $3, $4);
EXECUTEfooplan(1, 'Hunter Valley', 't', 200.00);
Create a preparedstatement for a SELECT statement, and then execute it.Note that the data type of the
second parameteris not specified, so it is inferred from the context in which $2is used:
PREPAREusrrptplan (int) AS SELECT * FROM users u, logs l
WHEREu.usrid=$1 AND u.usrid=l.usrid AND l.date = $2;
EXECUTEusrrptplan(1, current_date);
兼容性
The SQLstandard includes a prepare statement, but it is only for use inembedded SQL. This version of the prepare statement also uses a somewhatdifferent syntax.
相关参考
EXECUTE, DEALLOCATE
- 第二章 SQL命令参考-PREPARE
- 第二章 SQL命令参考-PREPARE
- 第二章 SQL命令参考-ABORT
- 第二章 SQL命令参考-ALTER AGGREGATE
- 第二章 SQL命令参考-ALTER CONVERSION
- 第二章 SQL命令参考-ALTER DATABASE
- 第二章 SQL命令参考-ALTER FILESPACE
- 第二章 SQL命令参考-ALTER FUNCTION
- 第二章 SQL命令参考-ANALYZE
- 第二章 SQL命令参考-BEGIN
- 第二章 SQL参考命令-CHECKPOINT
- 第二章 SQL参考命令-CLOSE
- 第二章 SQL参考命令-CLUSTER
- 第二章 SQL参考命令-COMMENT
- 第二章 SQL命令参考-COPY
- 第二章 SQL命令参考-CREATE TABLESPACE
- 第二章 SQL命令参考-CREATE TYPE
- 第二章 SQL命令参考-CREATE VIEW
- 【论文笔记】Question Answering over Freebase with Multi-Column Convolutional Neural Networks
- double 精度
- Python学习
- kd数的实现方法
- 嗯?原来if可以调用方法的?
- 第二章 SQL命令参考-PREPARE
- 二叉树的深度和广度优先遍历
- 深度学习之基础模型-ShuffleNet
- 做一名程序员的基本要求
- Java RSA
- U
- android studio中真机root问题
- 主从复制
- Python----文件操作