PREPARE - Amazon Redshift

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

PREPARE

準備陳述式供執行。

PREPARE 會建立預備陳述式。當 PREATE 陳述式執行時,會分析、重寫和規劃指定的陳述式 (SELECT、INSERT、UPDATE 或 DELETE)。接著對預備陳述式發出 EXECUTE 命令時,Amazon Redshift 可能會選擇先修改查詢執行計畫 (依據指定的參數值改善效能),再運行預備陳述式。

Syntax (語法)

PREPARE plan_name [ (datatype [, ...] ) ] AS statement

參數

plan_name

給予此特定預備陳述式的任意名稱。此名稱在單一工作階段內必須是唯一的,且後續會用來運行或解除配置先前的預備陳述式。

datatype

預備陳述式的參數資料類型。若要在預備陳述式本身內參考參數,請使用 $1、$2,以此類推。

statement

任何 SELECT、INSERT、UPDATE 或 DELETE 陳述式。

使用須知

預備陳述式可採用參數:這些值會在陳述式執行時替換到其中。若要在預備陳述式中包含參數,請在 PREPARE 陳述式中提供資料類型清單,然後在要準備的陳述式本身內使用 $1、$2 等符號依位置參考參數。當運行陳述式時,在 EXECUTE 陳述式中指定這些參數的實際值。如需詳細資訊,請參閱 EXECUTE

預備陳述式只會在目前工作階段期間內存在。當工作階段結束時,就會捨棄預備陳述式,因此必須再次建立它才能再度使用。這也表示,單一預備陳述式無法供多個同步的資料庫用戶端使用;不過,每個用戶端可建立自己要使用的預備陳述式。預備陳述式可使用 DEALLOCATE 命令手動移除。

當使用單一工作階段運行大量類似陳述式時,預備陳述式具備最大效能。如前所述,每次重頭執行預備陳述式時,Amazon Redshift 都會根據指定的參數值修改查詢執行計畫,以提高效能。若要檢查 Amazon Redshift 為任何特定 EXECUTE 陳述式選擇的查詢執行計畫,請使用EXPLAIN命令。

有關 Amazon Redshift 為進行查詢最佳化所收集的查詢計畫和統計資訊的詳細資訊,請參閲ANALYZE命令。

範例

創建臨時資料表,準備 INSERT 語句,然後運行它:

DROP TABLE IF EXISTS prep1; CREATE TABLE prep1 (c1 int, c2 char(20)); PREPARE prep_insert_plan (int, char) AS insert into prep1 values ($1, $2); EXECUTE prep_insert_plan (1, 'one'); EXECUTE prep_insert_plan (2, 'two'); EXECUTE prep_insert_plan (3, 'three'); DEALLOCATE prep_insert_plan;

準備 SELECT 語句,然後運行它:

PREPARE prep_select_plan (int) AS select * from prep1 where c1 = $1; EXECUTE prep_select_plan (2); EXECUTE prep_select_plan (3); DEALLOCATE prep_select_plan;

另請參閱

DEALLOCATE, EXECUTE