Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Petunjuk Aurora MySQL
Anda dapat menggunakan petunjuk SQL dengan kueri Aurora MySQL untuk performa yang sempurna. 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 MySQL versi 3, Anda dapat menggunakan semua petunjuk yang tersedia di MySQL 8.0 Community Edition. Untuk informasi selengkapnya tentang petunjuk ini, lihat Optimizer Hints
Petunjuk berikut tersedia di Aurora MySQL versi 2. Petunjuk ini berlaku untuk kueri yang menggunakan fitur hash join di Aurora MySQL versi 2, khususnya kueri yang menggunakan optimisasi kueri paralel.
- PQ, NO_PQ
-
Menentukan apakah akan memaksa pengoptimisasi untuk menggunakan kueri paralel berdasarkan per tabel atau per kueri.
PQmemaksa pengoptimisasi untuk menggunakan kueri paralel untuk tabel tertentu atau seluruh kueri (blok).NO_PQmencegah pengoptimisasi menggunakan kueri paralel untuk tabel tertentu atau seluruh kueri (blok).Petunjuk ini tersedia di Aurora MySQL 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_PQhanya pada tabel pilihan tersebut. Jika nama tabel tidak ditentukan, petunjukPQ/NO_PQakan 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, NO_HASH_JOIN
-
Mengaktifkan atau menonaktifkan kemampuan pengoptimisasi kueri paralel untuk memilih apakah akan menggunakan metode optimisasi hash join untuk kueri.
HASH_JOINmemungkinkan pengoptimisasi menggunakan hash join jika mekanismenya lebih efisien.NO_HASH_JOINmencegah pengoptimisasi menggunakan hash join untuk kueri. Petunjuk ini tersedia di Aurora MySQL versi 2.08 dan lebih tinggi. Ini tidak berpengaruh di Aurora MySQL 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, NO_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_PROBINGdanHASH_JOIN_BUILDINGuntuk menentukan cara kueri hash join diproses, tanpa mengatur ulang susunan tabel dalam teks kueri. Petunjuk ini tersedia di Aurora MySQL versi 2.08 dan lebih tinggi. Ini tidak berpengaruh di Aurora MySQL versi 3.Contoh berikut menunjukkan cara menggunakan petunjuk ini. Menentukan petunjuk
HASH_JOIN_PROBINGuntuk tabelT2memiliki efek yang sama seperti menentukanNO_HASH_JOIN_PROBINGuntuk 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, NO_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_PROBINGdanHASH_JOIN_BUILDINGuntuk menentukan cara kueri hash join diproses, tanpa mengatur ulang susunan tabel dalam teks kueri. Petunjuk ini tersedia di Aurora MySQL versi 2.08 dan lebih tinggi. Ini tidak berpengaruh di Aurora MySQL versi 3.Contoh berikut menunjukkan kepada Anda cara menggunakan petunjuk ini. Menentukan petunjuk
HASH_JOIN_BUILDINGuntuk tabelT2memiliki efek yang sama seperti menentukanNO_HASH_JOIN_BUILDINGuntuk 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. Petunjuk ini ditujukan sebagai pengganti untuk petunjuk
STRAIGHT_JOINMySQL dan setara dengan petunjuk JOIN_FIXED_ORDERMySQL. Petunjuk ini tersedia di Aurora MySQL 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. Petunjuk ini setara dengan petunjuk JOIN_ORDER
MySQL. Petunjuk ini tersedia di Aurora MySQL 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. Petunjuk ini setara dengan petunjuk JOIN_PREFIX
MySQL. Petunjuk ini tersedia di Aurora MySQL 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. Petunjuk ini setara dengan petunjuk JOIN_SUFFIX
MySQL. Petunjuk ini tersedia di Aurora MySQL 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 kueri join MySQL Aurora besar dengan hash join.