Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Suggerimenti di Aurora MySQL
È possibile utilizzare i suggerimenti SQL con le query Aurora MySQL per ottimizzare le prestazioni. È inoltre possibile utilizzare i suggerimenti per impedire che i piani di esecuzione per query importanti vengano modificati a causa di condizioni imprevedibili.
Suggerimento
Per verificare l'effetto di un suggerimento su una query, esaminare il piano di query prodotto dall'istruzione EXPLAIN. Confrontare i piani di query con e senza il suggerimento.
In Aurora MySQL versione 3, puoi usare tutti i suggerimenti disponibili in MySQL Community Edition 8.0. Per ulteriori informazioni su questi suggerimenti, consulta Suggerimenti di ottimizzazione
Questi suggerimenti sono disponibili in Aurora MySQL versione 2. Questi suggerimenti si applicano alle query che utilizzano la funzionalità hash join in Aurora MySQL versione 2, in particolare alle query che utilizzano l'ottimizzazione delle query parallele.
- PQ, NO_PQ
-
Specifica se forzare l'ottimizzatore a utilizzare una query parallela per tabella o per query.
PQforza l'ottimizzazione a utilizzare la query parallela per le tabelle specificate o per l'intera query (blocco).NO_PQimpedisce all'ottimizzazione di utilizzare la query parallela per le tabelle specificate o per l'intera query (blocco).Questo suggerimento è disponibile in Aurora MySQL versione 2.11 e successive. Gli esempi seguenti mostrano come utilizzare questo suggerimento.
Nota
La specificazione del nome di una tabella impone all'ottimizzazione di applicare il suggerimento
PQ/NO_PQsolo su quelle tabelle selezionate. La mancata specificazione del nome di una tabella impone il suggerimentoPQ/NO_PQsu tutte le tabelle interessate dal blocco di query.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, NO_HASH_JOIN
-
Attiva o disattiva la possibilità dell'ottimizzazione di query parallele di scegliere se utilizzare il metodo di ottimizzazione hash join per una query.
HASH_JOINconsente all'ottimizzazione di utilizzare hash join se tale meccanismo è più efficiente.NO_HASH_JOINimpedisce all'ottimizzazione di utilizzare hash join per la query. Questo suggerimento è disponibile in Aurora MySQL versione 2.08 e successive. Non ha alcun effetto in Aurora MySQL versione 3.Gli esempi seguenti mostrano come utilizzare questo suggerimento.
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, NO_HASH_JOIN_PROBING
-
In una query hash join, indica se utilizzare la tabella specificata per il lato probe del join. La query verifica se i valori delle colonne della tabella di generazione esistono nella tabella probe, anziché leggerne l'intero contenuto. È possibile utilizzare
HASH_JOIN_PROBINGeHASH_JOIN_BUILDINGper specificare la modalità di elaborazione delle query di join hash senza riordinare le tabelle all'interno del testo della query. Questo suggerimento è disponibile in Aurora MySQL versione 2.08 e successive. Non ha alcun effetto in Aurora MySQL versione 3.Gli esempi seguenti mostrano come utilizzare questo suggerimento. Specificare il suggerimento
HASH_JOIN_PROBINGper la tabellaT2ha lo stesso effetto di specificareNO_HASH_JOIN_PROBINGper la tabellaT1.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, NO_HASH_JOIN_BUILDING
-
In una query hash join, indica se utilizzare la tabella specificata per il lato build del join. La query elabora tutte le righe di questa tabella per creare l'elenco dei valori di colonna per un riferimento incrociato con l'altra tabella. È possibile utilizzare
HASH_JOIN_PROBINGeHASH_JOIN_BUILDINGper specificare la modalità di elaborazione delle query di join hash senza riordinare le tabelle all'interno del testo della query. Questo suggerimento è disponibile in Aurora MySQL versione 2.08 e successive. Non ha alcun effetto in Aurora MySQL versione 3.L'esempio seguente mostra come utilizzare questo suggerimento. Specificare il suggerimento
HASH_JOIN_BUILDINGper la tabellaT2ha lo stesso effetto di specificareNO_HASH_JOIN_BUILDINGper la tabellaT1.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
-
Specifica che le tabelle della query vengono unite in base all'ordine in cui sono elencate nella query. È utile con le query che coinvolgono almeno tre tabelle. È inteso come un sostituto per il suggerimento MySQL
STRAIGHT_JOINed è equivalente al suggerimento MySQL JOIN_FIXED_ORDER. Questo suggerimento è disponibile in Aurora MySQL versione 2.08 e successive. L'esempio seguente mostra come utilizzare questo suggerimento.
EXPLAIN SELECT /*+ JOIN_FIXED_ORDER() */ f1, f2 FROM t1 JOIN t2 USING (id) JOIN t3 USING (id) JOIN t4 USING (id); - JOIN_ORDER
-
Specifica l'ordine join per le tabelle nella query. È utile con le query che coinvolgono almeno tre tabelle. È equivalente al suggerimento MySQL JOIN_ORDER
. Questo suggerimento è disponibile in Aurora MySQL versione 2.08 e successive. L'esempio seguente mostra come utilizzare questo suggerimento.
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
-
Specifica le tabelle da inserire per prime nell'ordine join. È utile con le query che coinvolgono almeno tre tabelle. È equivalente al suggerimento MySQL JOIN_PREFIX
. Questo suggerimento è disponibile in Aurora MySQL versione 2.08 e successive. L'esempio seguente mostra come utilizzare questo suggerimento.
EXPLAIN SELECT /*+ JOIN_PREFIX (t4, t2) */ f1, f2 FROM t1 JOIN t2 USING (id) JOIN t3 USING (id) JOIN t4 USING (id); - JOIN_SUFFIX
-
Specifica le tabelle da inserire per ultime nell'ordine join. È utile con le query che coinvolgono almeno tre tabelle. È equivalente al suggerimento MySQL JOIN_SUFFIX
. Questo suggerimento è disponibile in Aurora MySQL versione 2.08 e successive. L'esempio seguente mostra come utilizzare questo suggerimento.
EXPLAIN SELECT /*+ JOIN_SUFFIX (t1) */ f1, f2 FROM t1 JOIN t2 USING (id) JOIN t3 USING (id) JOIN t4 USING (id);
Per informazioni sull'utilizzo delle query di hash join, vedere Ottimizzazione di grandi query di join Aurora MySQL con hash join.