Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Aurora Petunjuk saya SQL
Anda dapat menggunakan SQL petunjuk dengan kueri Aurora SQL My untuk menyempurnakan kinerja. Anda juga dapat menggunakan petunjuk agar rencana eksekusi untuk kueri penting tidak berubah karena kondisi yang tidak dapat diprediksi.
Tip
Untuk memverifikasi efek petunjuk pada kueri, periksa rencana kueri yang dihasilkan oleh pernyataan EXPLAIN
. Bandingkan rencana kueri dengan atau tanpa petunjuk.
Di Aurora My SQL versi 3, Anda dapat menggunakan semua petunjuk yang tersedia di My SQL Community Edition 8.0. Untuk informasi selengkapnya tentang petunjuk ini, lihat Petunjuk Pengoptimal di Manual Referensi
Petunjuk berikut tersedia di Aurora SQL My versi 2. Petunjuk ini berlaku untuk kueri yang menggunakan fitur gabungan hash di Aurora My SQL versi 2, terutama kueri yang menggunakan optimasi kueri paralel.
- PQ, NO_PQ
-
Menentukan apakah akan memaksa pengoptimisasi untuk menggunakan kueri paralel berdasarkan per tabel atau per kueri.
PQ
memaksa pengoptimisasi untuk menggunakan kueri paralel untuk tabel tertentu atau seluruh kueri (blok).NO_PQ
mencegah pengoptimisasi menggunakan kueri paralel untuk tabel tertentu atau seluruh kueri (blok).Petunjuk ini tersedia di Aurora SQL My versi 2.11 dan lebih tinggi. Contoh berikut menunjukkan kepada Anda cara menggunakan petunjuk ini.
catatan
Menentukan nama tabel akan memaksa pengoptimisasi untuk menerapkan petunjuk
PQ/NO_PQ
hanya pada tabel pilihan tersebut. Jika nama tabel tidak ditentukan, petunjukPQ/NO_PQ
akan dipaksa pada semua tabel yang terpengaruh oleh blok kueri.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, TIDAK_ _ HASH JOIN
-
Mengaktifkan atau menonaktifkan kemampuan pengoptimisasi kueri paralel untuk memilih apakah akan menggunakan metode optimisasi hash join untuk kueri.
HASH_JOIN
memungkinkan pengoptimisasi menggunakan hash join jika mekanismenya lebih efisien.NO_HASH_JOIN
mencegah pengoptimisasi menggunakan hash join untuk kueri. Petunjuk ini tersedia di Aurora SQL My versi 2.08 dan lebih tinggi. Ini tidak berpengaruh di Aurora My SQL versi 3.Contoh berikut menunjukkan kepada Anda cara menggunakan petunjuk ini.
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, TIDAK _ _ HASH _ JOIN PROBING
-
Di kueri hash join, tentukan apakah akan menggunakan tabel yang ditentukan untuk sisi probe dari join. Kueri ini menguji apakah nilai kolom dari tabel build ada di tabel probe, bukan membaca seluruh konten tabel probe. Anda dapat menggunakan
HASH_JOIN_PROBING
danHASH_JOIN_BUILDING
untuk menentukan cara kueri hash join diproses, tanpa mengatur ulang susunan tabel dalam teks kueri. Petunjuk ini tersedia di Aurora SQL My versi 2.08 dan lebih tinggi. Ini tidak berpengaruh di Aurora My SQL versi 3.Contoh berikut menunjukkan cara menggunakan petunjuk ini. Menentukan petunjuk
HASH_JOIN_PROBING
untuk tabelT2
memiliki efek yang sama seperti menentukanNO_HASH_JOIN_PROBING
untuk tabelT1
.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, TIDAK _ _ HASH _ JOIN BUILDING
-
Di kueri hash join, tentukan apakah akan menggunakan tabel yang ditentukan untuk sisi build dari join. Kueri ini memproses semua baris dari tabel ini untuk membuat daftar nilai kolom untuk melakukan referensi silang dengan tabel lain. Anda dapat menggunakan
HASH_JOIN_PROBING
danHASH_JOIN_BUILDING
untuk menentukan cara kueri hash join diproses, tanpa mengatur ulang susunan tabel dalam teks kueri. Petunjuk ini tersedia di Aurora SQL My versi 2.08 dan lebih tinggi. Ini tidak berpengaruh di Aurora My SQL versi 3.Contoh berikut menunjukkan kepada Anda cara menggunakan petunjuk ini. Menentukan petunjuk
HASH_JOIN_BUILDING
untuk tabelT2
memiliki efek yang sama seperti menentukanNO_HASH_JOIN_BUILDING
untuk tabelT1
.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
-
Menentukan bahwa tabel dalam kueri digabungkan berdasarkan urutan pencantumannya dalam kueri. Ini berguna dengan kueri yang memerlukan tiga tabel atau lebih. Ini dimaksudkan sebagai pengganti SQL
STRAIGHT_JOIN
petunjuk Saya dan setara dengan petunjuk SQL JOIN_ FIXED _ ORDERSaya. Petunjuk ini tersedia di Aurora SQL My versi 2.08 dan lebih tinggi. Contoh berikut menunjukkan kepada Anda cara menggunakan petunjuk ini.
EXPLAIN SELECT /*+ JOIN_FIXED_ORDER() */ f1, f2 FROM t1 JOIN t2 USING (id) JOIN t3 USING (id) JOIN t4 USING (id);
- JOIN_ORDER
-
Menentukan urutan join untuk tabel dalam kueri. Ini berguna dengan kueri yang memerlukan tiga tabel atau lebih. Ini setara dengan ORDER petunjuk SQL JOIN_
Saya. Petunjuk ini tersedia di Aurora SQL My versi 2.08 dan lebih tinggi. Contoh berikut menunjukkan kepada Anda cara menggunakan petunjuk ini.
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
-
Menentukan tabel yang dimasukkan pertama dalam urutan join. Ini berguna dengan kueri yang memerlukan tiga tabel atau lebih. Ini setara dengan PREFIX petunjuk SQL JOIN_
Saya. Petunjuk ini tersedia di Aurora SQL My versi 2.08 dan lebih tinggi. Contoh berikut menunjukkan kepada Anda cara menggunakan petunjuk ini.
EXPLAIN SELECT /*+ JOIN_PREFIX (t4, t2) */ f1, f2 FROM t1 JOIN t2 USING (id) JOIN t3 USING (id) JOIN t4 USING (id);
- JOIN_SUFFIX
-
Menentukan tabel yang dimasukkan terakhir dalam urutan join. Ini berguna dengan kueri yang memerlukan tiga tabel atau lebih. Ini setara dengan SUFFIX petunjuk SQL JOIN_
Saya. Petunjuk ini tersedia di Aurora SQL My versi 2.08 dan lebih tinggi. Contoh berikut menunjukkan kepada Anda cara menggunakan petunjuk ini.
EXPLAIN SELECT /*+ JOIN_SUFFIX (t1) */ f1, f2 FROM t1 JOIN t2 USING (id) JOIN t3 USING (id) JOIN t4 USING (id);
Untuk informasi tentang menggunakan kueri hash join, lihat Mengoptimalkan Aurora besar Kueri bergabung SQL saya dengan gabungan hash.