Aurora Petunjuk saya SQL - Amazon Aurora

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 Saya SQL.

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, petunjuk PQ/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 dan HASH_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 tabel T2 memiliki efek yang sama seperti menentukan NO_HASH_JOIN_PROBING untuk tabel 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, 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 dan HASH_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 tabel T2 memiliki efek yang sama seperti menentukan NO_HASH_JOIN_BUILDING untuk tabel 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

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 _ ORDER 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_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.