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

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

使用预准备语句支持

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

A准备语句是在服务器端编译但不立即执行的 SQL 语句。在关闭对象或连接之前,已编译的语句作为 PredeRectory 对象存储在服务器上。当该对象存在时,您可以根据需要使用不同的参数值执行预准备语句多次,而无需再次编译该语句。这种降低了开销,可以更快地执行一组查询。

有关预准备语句的详细信息,请参阅来自 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 查询。