Aurora Meine SQL Tipps - Amazon Aurora

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.

Aurora Meine SQL Tipps

Sie können SQL Hinweise mit Aurora SQL My-Abfragen verwenden, um die Leistung zu optimieren. Sie können auch Hinweise verwenden, um zu verhindern, dass Ausführungspläne für wichtige Abfragen aufgrund unvorhersehbarer Bedingungen geändert werden.

Tipp

Um zu überprüfen, welche Auswirkungen ein Hinweis auf eine Abfrage hat, überprüfen Sie den von der EXPLAIN-Anweisung erzeugten Abfrageplan. Vergleichen Sie die Abfragepläne mit und ohne Hinweis.

In Aurora My SQL Version 3 können Sie alle Hinweise verwenden, die in My SQL Community Edition 8.0 verfügbar sind. Weitere Informationen zu diesen Hinweisen finden Sie unter Optimizer-Hinweise im My SQL Reference Manual.

Die folgenden Hinweise sind in Aurora My SQL Version 2 verfügbar. Diese Hinweise gelten für Abfragen, die die Hash-Join-Funktion in Aurora My SQL Version 2 verwenden, insbesondere für Abfragen, die die parallel Abfrageoptimierung verwenden.

PQ, NO_PQ

Gibt an, ob der Optimierer gezwungen werden soll, Parallelabfragen pro Tabelle oder pro Abfrage zu verwenden.

PQ zwingt den Optimierer, Parallelabfragen für bestimmte Tabellen oder die gesamte Abfrage (Block) zu verwenden. NO_PQ verhindert, dass der Optimierer Parallelabfragen für bestimmte Tabellen oder die gesamte Abfrage (Block) verwendet.

Dieser Hinweis ist in Aurora My SQL Version 2.11 und höher verfügbar. In den folgenden Beispielen wird gezeigt, wie Sie diesen Hinweis verwenden können.

Anmerkung

Die Angabe eines Tabellennamens zwingt den Optimierer, den PQ/NO_PQ-Hinweis nur auf diese ausgewählten Tabellen anzuwenden. Wenn kein Tabellenname angegeben ist, wird der PQ/NO_PQ-Hinweis für alle vom Abfrageblock betroffenen Tabellen erzwungen.

EXPLAIN SELECT /*+ PQ() */ f1, f2 FROM num1 t1 WHERE f1 > 10 and f2 < 100; EXPLAIN SELECT /*+ PQ(t1) */ f1, f2 FROM num1 t1 WHERE f1 > 10 and f2 < 100; EXPLAIN SELECT /*+ PQ(t1,t2) */ f1, f2 FROM num1 t1, num1 t2 WHERE t1.f1 = t2.f21; EXPLAIN SELECT /*+ NO_PQ() */ f1, f2 FROM num1 t1 WHERE f1 > 10 and f2 < 100; EXPLAIN SELECT /*+ NO_PQ(t1) */ f1, f2 FROM num1 t1 WHERE f1 > 10 and f2 < 100; EXPLAIN SELECT /*+ NO_PQ(t1,t2) */ f1, f2 FROM num1 t1, num1 t2 WHERE t1.f1 = t2.f21;
HASH_JOIN, HASH NEIN_ _ JOIN

Aktiviert oder deaktiviert die Funktion des Parallelabfragenoptimierers, auszuwählen, ob die Hash-Join-Optimierungsmethode für eine Abfrage verwendet werden soll. HASH_JOIN ermöglicht es dem Optimierer, Hash-Join zu verwenden, wenn dieser Mechanismus effizienter ist. NO_HASH_JOIN verhindert, dass der Optimierer Hash-Join für die Abfrage verwendet. Dieser Hinweis ist in Aurora My SQL Version 2.08 und höher verfügbar. In Aurora My SQL Version 3 hat es keine Wirkung.

In den folgenden Beispielen wird gezeigt, wie Sie diesen Hinweis verwenden können.

EXPLAIN SELECT/*+ HASH_JOIN(t2) */ f1, f2 FROM t1, t2 WHERE t1.f1 = t2.f1; EXPLAIN SELECT /*+ NO_HASH_JOIN(t2) */ f1, f2 FROM t1, t2 WHERE t1.f1 = t2.f1;
HASH_ JOIN _PROBING, NEIN_ _ HASH _ JOIN PROBING

Gibt in einer Hash-Join-Abfrage an, ob die angegebene Tabelle für die Testseite des Joins verwendet werden soll. Statt den gesamten Inhalt der Testtabelle zu lesen, wird über die Abfrage geprüft, ob Spaltenwerte aus der Build-Tabelle in der Testtabelle vorhanden sind. Mit HASH_JOIN_PROBING und HASH_JOIN_BUILDING können Sie angeben, wie Hash-Join-Abfragen verarbeitet werden, ohne die Tabellen innerhalb des Abfragetextes neu zu ordnen. Dieser Hinweis ist in Aurora My SQL Version 2.08 und höher verfügbar. In Aurora My SQL Version 3 hat es keine Wirkung.

In den folgenden Beispielen wird gezeigt, wie Sie diesen Hinweis verwenden können. Die Angabe des HASH_JOIN_PROBING-Hinweises für die Tabelle T2 hat den gleichen Effekt wie die Angabe von NO_HASH_JOIN_PROBING für die Tabelle T1.

EXPLAIN SELECT /*+ HASH_JOIN(t2) HASH_JOIN_PROBING(t2) */ f1, f2 FROM t1, t2 WHERE t1.f1 = t2.f1; EXPLAIN SELECT /*+ HASH_JOIN(t2) NO_HASH_JOIN_PROBING(t1) */ f1, f2 FROM t1, t2 WHERE t1.f1 = t2.f1;
HASH_ JOIN _BUILDING, NEIN_ _ HASH _ JOIN BUILDING

Gibt in einer Hash-Join-Abfrage an, ob die angegebene Tabelle für die Build-Seite des Joins verwendet werden soll oder nicht. Mit der Abfrage werden alle Zeilen aus dieser Tabelle verarbeitet, um die Liste der Spaltenwerte und den Querverweis auf die andere Tabelle zu erstellen. Mit HASH_JOIN_PROBING und HASH_JOIN_BUILDING können Sie angeben, wie Hash-Join-Abfragen verarbeitet werden, ohne die Tabellen innerhalb des Abfragetextes neu zu ordnen. Dieser Hinweis ist in Aurora My SQL Version 2.08 und höher verfügbar. In Aurora My SQL Version 3 hat es keine Wirkung.

Im folgenden Beispiel wird gezeigt, wie Sie diesen Hinweis verwenden können. Die Angabe des HASH_JOIN_BUILDING-Hinweises für die Tabelle T2 hat den gleichen Effekt wie die Angabe von NO_HASH_JOIN_BUILDING für die Tabelle T1.

EXPLAIN SELECT /*+ HASH_JOIN(t2) HASH_JOIN_BUILDING(t2) */ f1, f2 FROM t1, t2 WHERE t1.f1 = t2.f1; EXPLAIN SELECT /*+ HASH_JOIN(t2) NO_HASH_JOIN_BUILDING(t1) */ f1, f2 FROM t1, t2 WHERE t1.f1 = t2.f1;
JOIN_FIXED_ORDER

Gibt an, dass Tabellen in der Abfrage basierend auf der Reihenfolge, in der sie in der Abfrage aufgelistet sind, verknüpft werden. Dieser Hinweis ist besonders nützlich bei Abfragen mit drei oder mehr Tabellen. Er ist als Ersatz für den SQL STRAIGHT_JOIN Hinweis Mein _ _ gedacht und entspricht dem ORDER Hinweis Mein SQL JOINFIXED_ _. Dieser Hinweis ist in Aurora My SQL Version 2.08 und höher verfügbar.

Im folgenden Beispiel wird gezeigt, wie Sie diesen Hinweis verwenden können.

EXPLAIN SELECT /*+ JOIN_FIXED_ORDER() */ f1, f2 FROM t1 JOIN t2 USING (id) JOIN t3 USING (id) JOIN t4 USING (id);
JOIN_ORDER

Gibt die Join-Reihenfolge für die Tabellen in der Abfrage an. Dieser Hinweis ist besonders nützlich bei Abfragen mit drei oder mehr Tabellen. Er entspricht dem ORDER Hinweis My SQL JOIN_. Dieser Hinweis ist in Aurora My SQL Version 2.08 und höher verfügbar.

Im folgenden Beispiel wird gezeigt, wie Sie diesen Hinweis verwenden können.

EXPLAIN SELECT /*+ JOIN_ORDER (t4, t2, t1, t3) */ f1, f2 FROM t1 JOIN t2 USING (id) JOIN t3 USING (id) JOIN t4 USING (id);
JOIN_PREFIX

Gibt die Tabellen an, die in der Join-Reihenfolge an erster Stelle stehen sollen. Dieser Hinweis ist besonders nützlich bei Abfragen mit drei oder mehr Tabellen. Er entspricht dem PREFIX Hinweis My SQL JOIN_. Dieser Hinweis ist in Aurora My SQL Version 2.08 und höher verfügbar.

Im folgenden Beispiel wird gezeigt, wie Sie diesen Hinweis verwenden können.

EXPLAIN SELECT /*+ JOIN_PREFIX (t4, t2) */ f1, f2 FROM t1 JOIN t2 USING (id) JOIN t3 USING (id) JOIN t4 USING (id);
JOIN_SUFFIX

Gibt die Tabellen an, die in der Join-Reihenfolge an letzter Stelle stehen sollen. Dieser Hinweis ist besonders nützlich bei Abfragen mit drei oder mehr Tabellen. Er entspricht dem SUFFIX Hinweis My SQL JOIN_. Dieser Hinweis ist in Aurora My SQL Version 2.08 und höher verfügbar.

Im folgenden Beispiel wird gezeigt, wie Sie diesen Hinweis verwenden können.

EXPLAIN SELECT /*+ JOIN_SUFFIX (t1) */ f1, f2 FROM t1 JOIN t2 USING (id) JOIN t3 USING (id) JOIN t4 USING (id);

Informationen zur Verwendung von Hash-Join-Abfragen finden Sie unter Optimierung großer Aurora My SQL Join-Abfragen mit Hash-Joins.