

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

# Optimalkan kueri Anda
<a name="performance-tuning-s3-throttling-optimizing-queries"></a>

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

## Gunakan LIMIT dengan klausa ORDER BY
<a name="performance-tuning-s3-throttling-use-limit-with-the-order-by-clause"></a>

`ORDER BY`Klausa 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 *N* nilai atas atau bawah, lalu gunakan juga `LIMIT` klausa. Ini secara signifikan mengurangi biaya pengurutan dengan mendorong penyortiran dan pembatasan ke node pekerja individu daripada ke satu pekerja.

## Optimalkan klausa JOIN
<a name="performance-tuning-s3-throttling-optimize-join-clauses"></a>

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
<a name="performance-tuning-s3-throttling-optimize-group-by-clauses"></a>

`GROUP BY`Operator 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
<a name="performance-tuning-s3-throttling-use-numbers-instead-of-strings"></a>

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

## Batasi jumlah kolom
<a name="performance-tuning-s3-throttling-limit-the-number-of-columns"></a>

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
<a name="performance-tuning-s3-throttling-use-regular-expressions-instead-of-like"></a>

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\$1like ()](https://trino.io/docs/current/functions/regexp.html#regexp_like) dan ekspresi reguler sebagai gantinya. Ini sangat berguna ketika Anda membandingkan daftar panjang nilai.

## Gunakan klausa LIMIT
<a name="performance-tuning-s3-throttling-use-the-limit-clause"></a>

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. `LIMIT`klausa lebih membantu ketika Anda menanyakan tabel yang memiliki sejumlah besar kolom yang berbasis string. `LIMIT`klausa juga membantu ketika Anda melakukan beberapa gabungan atau agregasi pada kueri apa pun.