メニュー
Amazon Redshift
データベース開発者ガイド (API Version 2012-12-01)

PREPARE

実行用のステートメントを準備します。

PREPARE によって、準備済みステートメントが作成されます。PREPARE ステートメントを実行すると、指定されたステートメント (SELECT、INSERT、UPDATE、または DELETE) の解析、再出力、および計画が実行されます。準備済みステートメントに対して EXECUTE コマンドを発行すると、Amazon Redshift は (指定したパラメータ値に基づいてパフォーマンスを改善するように) 必要に応じてクエリ実行計画を修正してから、準備済みステートメントを実行することがあります。

構文

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

Parameters

plan_name

この特定の準備済みステートメントに付けられた任意の名前。この名前は単一セッション内で一意でなければならず、以降は以前準備したステートメントの実行または割当解除に使われます。

datatype

準備済みステートメントに対するパラメータのデータ型。準備済みステートメント自体のパラメータを参照するには、S1、S2 などと使います。

statement

SELECT、INSERT、UPDATE または DELETE の任意のステートメント。

使用に関する注意事項

準備済みステートメントはパラメータ (ステートメントの実行時にステートメントに代入される値) を使用できます。準備済みステートメントにパラメータを含めるには、PREPARE ステートメントにデータ型のリストを提供し、準備するステートメント自体で、$1、$2 などの表記を使って、位置によりパラメータを参照します。ステートメントを実行する場合、EXECUTE ステートメントでこれらのパラメータの実際の値を指定します。詳細については、EXECUTE をご覧ください。

準備済みステートメントは、現在のセッションの有効期間中のみ有効です。セッションが終了すると、準備済みステートメントは破棄されるため、再使用する場合は、作り直す必要があります。これは、単一の準備済みステートメントを複数の同時データベースクライアントで使用することはできないということも意味します。ただし、各クライアントは独自の準備済みステートメントを作成して使用することができます。準備済みステートメントは、DEALLOCATE コマンドを使って、手動で削除できます。

単一のセッションを使用して多数の類似したステートメントを実行する場合、準備済みステートメントのパフォーマンスの面のメリットは最大になります。前述したように、準備済みステートメントを新たに実行するたびに、Amazon Redshift は指定されたパラメータ値に基づいてパフォーマンスを向上させるため、クエリの実行計画を修正することがあります。 Amazon Redshift が特定の EXECUTE ステートメントに選択したクエリ実行計画を確認するには、EXPLAIN コマンドを使用します。

クエリの計画と、クエリの最適化のために Amazon Redshift が収集した統計情報の詳細については、ANALYZE コマンドを参照してください。

一時テーブルを作成するには、INSERT ステートメントを準備して実行します。

Copy
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 ステートメントを準備して実行します。

Copy
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;

以下の資料も参照してください。

DEALLOCATEEXECUTE