Aurora I miei suggerimenti SQL - Amazon Aurora

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 nel My Reference Manual. SQL

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 suggerimento PQ/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 e HASH_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 tabella T2 ha lo stesso effetto di specificare NO_HASH_JOIN_PROBING per la tabella 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, 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 e HASH_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 tabella T2 ha lo stesso effetto di specificare NO_HASH_JOIN_BUILDING per la tabella 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

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.