使用预编译语句支持 - Amazon Redshift
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用预编译语句支持

JDBC 驱动程序支持预编译语句。Amazon Redshift您可以使用预编译语句来提高需要在同一连接期间多次运行的参数化查询的性能。

准备语句 是 SQL 语句,它在服务器端编译,但不会立即执行。编译后的语句作为 PreparedStatement 对象存储在服务器上,直到您关闭对象或连接。当该对象存在时,您可以使用不同的参数值根据需要多次执行预编译语句,而无需重新编译语句。减少此减少开销可以更快地执行查询集。

有关预编译语句的更多信息,请参阅 Oracle 的 JDBC 基础知识教程中的“使用预编译语句”。

您可以准备包含多个查询的语句。例如,以下预编译语句包含两个 INSERT 查询:

PreparedStatement pstmt = conn.prepareStatement("INSERT INTO MyTable VALUES (1, 'abc'); INSERT INTO CompanyTable VALUES (1, 'abc');");

请注意,这些查询不依赖于同一预编译语句中指定的其他查询的结果。由于查询不会在准备步骤期间运行,结果尚未返回,并且对同一预编译语句中的其他查询不可用。

例如,以下准备好的语句可创建表,然后将值插入到新创建的表中,但不允许这样做:

PreparedStatement pstmt = conn.prepareStatement("CREATE TABLE MyTable(col1 int, col2 varchar); INSERT INTO myTable VALUES (1, 'abc');");

如果您尝试准备此语句,服务器将返回一个错误,指示目标表 (myTable) 尚不存在。必须先执行 CREATE 查询,然后才能准备 INSERT 查询。