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à.
Aurora I miei suggerimenti SQL
Puoi usare i SQL suggerimenti con Aurora Le SQL mie query 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 My SQL versione 3, puoi usare tutti i suggerimenti disponibili in My SQL Community Edition 8.0. Per ulteriori informazioni su questi suggerimenti, consulta Optimizer Hints
I seguenti suggerimenti sono disponibili nella versione 2 di Aurora SQL My. Questi suggerimenti si applicano alle query che utilizzano la funzionalità hash join in Aurora My SQL 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.
PQ
forza l'ottimizzazione a utilizzare la query parallela per le tabelle specificate o per l'intera query (blocco).NO_PQ
impedisce all'ottimizzazione di utilizzare la query parallela per le tabelle specificate o per l'intera query (blocco).Questo suggerimento è disponibile in Aurora SQL My 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_PQ
solo su quelle tabelle selezionate. La mancata specificazione del nome di una tabella impone il suggerimentoPQ/NO_PQ
su 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_, NO_ _ JOIN 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_JOIN
consente all'ottimizzazione di utilizzare hash join se tale meccanismo è più efficiente.NO_HASH_JOIN
impedisce all'ottimizzazione di utilizzare hash join per la query. Questo suggerimento è disponibile in Aurora SQL My versione 2.08 e successive. Non ha effetto nella SQL versione 3 di Aurora My.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_PROBING
eHASH_JOIN_BUILDING
per 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 SQL My versione 2.08 e successive. Non ha effetto nella SQL versione 3 di Aurora My.Gli esempi seguenti mostrano come utilizzare questo suggerimento. Specificare il suggerimento
HASH_JOIN_PROBING
per la tabellaT2
ha lo stesso effetto di specificareNO_HASH_JOIN_PROBING
per 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_PROBING
eHASH_JOIN_BUILDING
per 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 SQL My versione 2.08 e successive. Non ha effetto nella SQL versione 3 di Aurora My.L'esempio seguente mostra come utilizzare questo suggerimento. Specificare il suggerimento
HASH_JOIN_BUILDING
per la tabellaT2
ha lo stesso effetto di specificareNO_HASH_JOIN_BUILDING
per 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 sostituto del SQL
STRAIGHT_JOIN
suggerimento My ed è equivalente al suggerimento My SQL JOIN_ FIXED _ ORDER. Questo suggerimento è disponibile in Aurora SQL My 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 My SQL JOIN _. ORDER
Questo suggerimento è disponibile in Aurora SQL My 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 My SQL JOIN _. PREFIX
Questo suggerimento è disponibile in Aurora SQL My 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 My SQL JOIN _. SUFFIX
Questo suggerimento è disponibile in Aurora SQL My 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 delle query Aurora SQL My join di grandi dimensioni con hash join.