使用預備陳述式支援 - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用預備陳述式支援

Amazon Redshift JDBC 驅動程式支援預備陳述式。您可以使用預備陳述式來改善需要在相同連線期間執行多次的參數化查詢效能。

預備陳述式是在伺服器端編譯但不會立即執行的 SQL 陳述式。編譯後的陳述式會以 PreparedStatement 物件的形式儲存在伺服器上,直到您關閉物件或連線為止。當該物件存在時,您可以視需要使用不同的參數值執行預備陳述式多次,而不必重新編譯陳述式。由於額外負荷降低,因此該組查詢的執行速度會變快。

如需預備陳述式的相關資訊,請參閱《Oracle 提供的 JDBC 基本概念教學課程》https://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html中的<使用預備陳述式>。

您可以準備包含多個查詢的陳述式。例如,下列預備陳述式包含兩個 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 查詢。