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
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 derPQ/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
undHASH_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 TabelleT2
hat den gleichen Effekt wie die Angabe vonNO_HASH_JOIN_PROBING
für die TabelleT1
.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
undHASH_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 TabelleT2
hat den gleichen Effekt wie die Angabe vonNO_HASH_JOIN_BUILDING
für die TabelleT1
.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.