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

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

使用預備陳述式支援

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

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

如需有關已準備陳述式的詳細資訊,請參閱 JDBC Oracle 基礎教學課程中的「使用已準備陳述式」。

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