Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
PREPARE
Bereitet eine Anweisung für die Ausführung vor.
PREPARE erstellt eine vorbereitete Anweisung. Wenn die PREPARE-Anweisung ausgeführt wird, wird die angegebene Anweisung (SELECT, INSERT, UPDATE oder DELETE) analysiert, neu geschrieben und geplant. Wenn dann ein EXECUTE-Befehl für die vorbereitete Anweisung ausgegeben wird, kann Amazon Redshift den Abfrageausführungsplan optional ändern (um die Leistung auf der Basis der angegebenen Parameterwerte zu verbessern), bevor die vorbereitete Anweisung ausgeführt wird.
Syntax
PREPARE plan_name [ (datatype [, ...] ) ] AS statement
Parameter
- plan_name
-
Ein zufällig ausgewählter Name, der dieser bestimmten vorbereiteten Anweisung gegeben wird. Er muss innerhalb einer einzelnen Sitzung eindeutig sein und wird anschließend verwendet, um eine zuvor vorbereitete Anweisung auszuführen oder deren Zuteilung aufzuheben.
- datatype
-
Der Datentyp eines Parameters der vorbereiteten Anweisung. Um auf die Parameter in der vorbereiteten Anweisung selbst zu verweisen, verwenden Sie $1, $2 usw.
- Nachricht sehen
-
Eine SELECT-, INSERT-, UPDATE- oder DELETE-Anweisung.
Nutzungshinweise
Vorbereitete Anweisungen können Parameter besitzen: Werte, die in die Anweisung ersetzt werden, wenn sie ausgeführt wird. Um Parameter in eine vorbereitete Anweisung einzuschließen, stellen Sie in der PREPARE-Anweisung eine Liste von Datentypen bereit und verweisen Sie in der vorzubereitenden Anweisung selbst auf die Parameter nach Position, in der Schreibweise $1, $2... Wenn die Anweisung ausgeführt wird, geben Sie die tatsächlichen Werte für diese Parameter in der Anweisung EXECUTE an. Weitere Details finden Sie unter EXECUTE.
Vorbereitete Anweisungen sind nur für die Dauer der aktuellen Sitzung gültig. Nach Ende der Sitzung wird die vorbereitete Anweisung verworfen. Daher muss sie erneut erstellt werden, um erneut verwendet zu werden. Das bedeutet auch, dass eine einzelne vorbereitete Anweisung nicht von mehreren Datenbankclients gleichzeitig verwendet werden kann. Jeder Client kann jedoch eine eigene vorbereitete Anweisung zur Verwendung erstellen. Die vorbereitete Anweisung kann mittels des Befehls DEALLOCATE manuell entfernt werden.
Vorbereitete Anweisungen bieten den größten Leistungsvorteil, wenn eine einzelne Sitzung zur Ausführung einer großen Zahl ähnlicher Anweisungen verwendet wird. Wie bereits erwähnt, kann Amazon Redshift für jede neue Ausführung einer vorbereiteten Anweisung den Abfrageausführungsplan ändern, um die Leistung auf der Basis der angegebenen Parameterwerte zu verbessern. Um den Abfrageausführungsplan zu überprüfen, den Amazon Redshift für spezifische EXECUTE-Anweisungen ausgewählt hat, verwenden Sie den Befehl EXPLAIN.
Weitere Informationen zur Abfrageplanung und zu den Statistiken, die von Amazon Redshift für die Optimierung von Abfragen gesammelt werden, finden Sie unter dem Befehl ANALYZE.
Beispiele
Erstellung einer temporären Tabelle, Vorbereitung einer INSERT-Anweisung vor und anschließende Ausführung:
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;
Vorbereitung einer SELECT-Anweisung und anschließende Ausführung:
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;