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

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

使用預備陳述式支援

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

準備好的陳述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查詢。