Optimalkan kueri Anda - Amazon Athena

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Optimalkan kueri Anda

Gunakan saran di bagian ini untuk mengoptimalkan SQL kueri Anda di Athena.

Gunakan LIMIT dengan klausa ORDER BY

ORDER BYKlausa mengembalikan data dalam urutan yang diurutkan. Ini membutuhkan Athena untuk mengirim semua baris data ke node pekerja tunggal dan kemudian mengurutkan baris. Jenis kueri ini dapat berjalan untuk waktu yang lama atau bahkan gagal.

Untuk efisiensi yang lebih besar dalam kueri Anda, lihat bagian atas atau bawah N nilai, dan kemudian juga menggunakan LIMIT klausa. Ini secara signifikan mengurangi biaya pengurutan dengan mendorong penyortiran dan pembatasan ke node pekerja individu daripada ke satu pekerja.

Optimalkan JOIN klausa

Ketika Anda menggabungkan dua tabel, Athena mendistribusikan tabel di sebelah kanan ke node pekerja, dan kemudian mengalirkan tabel di sebelah kiri untuk melakukan gabungan.

Untuk alasan ini, tentukan tabel yang lebih besar di sisi kiri gabungan dan tabel yang lebih kecil di sisi kanan gabungan. Dengan cara ini, Athena menggunakan lebih sedikit memori dan menjalankan kueri dengan latensi yang lebih rendah.

Perhatikan juga poin-poin berikut:

  • Saat Anda menggunakan beberapa JOIN perintah, tentukan tabel dari yang terbesar hingga terkecil.

  • Hindari gabungan silang kecuali jika diperlukan oleh kueri.

Optimalkan klausa GROUP BY

GROUP BYOperator mendistribusikan baris berdasarkan GROUP BY kolom ke node pekerja. Kolom ini direferensikan dalam memori dan nilainya dibandingkan saat baris dicerna. Nilai-nilai dikumpulkan bersama ketika GROUP BY kolom cocok. Dengan mempertimbangkan cara kerja proses ini, disarankan untuk memesan kolom dari kardinalitas tertinggi ke yang terendah.

Gunakan angka, bukan string

Karena angka membutuhkan lebih sedikit memori dan lebih cepat diproses dibandingkan dengan string, gunakan angka alih-alih string jika memungkinkan.

Batasi jumlah kolom

Untuk mengurangi jumlah total memori yang diperlukan untuk menyimpan data Anda, batasi jumlah kolom yang ditentukan dalam SELECT pernyataan Anda.

Gunakan ekspresi reguler alih-alih LIKE

Kueri yang menyertakan klausa seperti LIKE '%string%' pada string besar bisa sangat intensif secara komputasi. Saat Anda memfilter beberapa nilai pada kolom string, gunakan fungsi regexp_like () dan ekspresi reguler sebagai gantinya. Ini sangat berguna ketika Anda membandingkan daftar panjang nilai.

Gunakan LIMIT klausa

Alih-alih memilih semua kolom saat Anda menjalankan kueri, gunakan LIMIT klausa untuk mengembalikan hanya kolom yang Anda butuhkan. Ini mengurangi ukuran kumpulan data yang diproses melalui pipeline eksekusi kueri. LIMITklausa lebih membantu ketika Anda menanyakan tabel yang memiliki sejumlah besar kolom yang berbasis string. LIMITklausa juga membantu ketika Anda melakukan beberapa gabungan atau agregasi pada kueri apa pun.