

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

# JELASKAN operator untuk paket kueri Amazon Redshift
<a name="explain-operators"></a>

Bagian ini menjelaskan secara singkat operator yang paling sering Anda lihat di `EXPLAIN` output.

## Pemindaian berurutan
<a name="sequential-scan"></a>

Operator pemindaian sekuensial (Seq Scan) menunjukkan pemindaian tabel. Seq Scan memindai setiap kolom dalam tabel secara berurutan dari awal hingga akhir dan mengevaluasi kendala kueri (dalam klausa) untuk setiap baris. `WHERE`

## Bergabunglah dengan operator
<a name="join-operators"></a>

Amazon Redshift memilih operator gabungan berdasarkan desain fisik tabel yang digabungkan, lokasi data yang diperlukan untuk bergabung, dan persyaratan spesifik kueri itu sendiri.

### Loop Bersarang
<a name="join-nested-loop"></a>

Loop bersarang digunakan terutama untuk cross-join. Cross-join adalah gabungan tanpa kondisi gabungan yang menghasilkan produk Cartesian dari dua tabel. Loop bersarang biasanya dijalankan sebagai gabungan loop bersarang, yang merupakan jenis gabungan yang paling lambat. Jika loop bersarang hadir, Anda dapat melihat peristiwa peringatan loop bersarang di tampilan [STL\_ALERT\_EVENT\_LOG](https://docs.aws.amazon.com/redshift/latest/dg/r_STL_ALERT_EVENT_LOG.html). Anda dapat menjalankan kueri berikut untuk mengidentifikasi kueri yang memiliki loop bersarang:

```
select q.query, 
       trim(q.querytxt) as sql_query, 
       q.starttime 
from stl_query q
join stl_alert_event_log l
    on l.query = q.query
    and l.event like 'Nested Loop Join in the query plan%' 
order by q.starttime desc;
```

### Hash bergabung dan hash
<a name="join-hash"></a>

Hash join dan operator hash biasanya lebih cepat daripada nested loop join. Operator ini digunakan untuk sambungan dalam dan sambungan luar kiri dan kanan. Anda dapat menggunakan operator hash join dan hash saat menggabungkan tabel di mana kolom gabungan bukan kunci distribusi dan kunci sortir. Operator hash membuat tabel hash untuk tabel bagian dalam di join. Operator bergabung hash membaca tabel luar, hash kolom bergabung, dan menemukan kecocokan di tabel hash bagian dalam.

### Gabung bergabung
<a name="join-merge"></a>

Operator gabungan gabungan biasanya merupakan gabungan tercepat dan digunakan untuk sambungan dalam dan gabungan luar. Gabungan gabungan tidak digunakan untuk gabungan penuh. Anda dapat menggunakan gabungan gabungan saat menggabungkan tabel di mana kolom gabungan adalah kunci distribusi dan kunci pengurutan, dan ketika kurang dari 20 persen tabel yang bergabung tidak disortir. Operator gabungan gabungan membaca dua tabel yang diurutkan secara berurutan dan menemukan baris yang cocok. Untuk melihat persentase baris yang tidak disortir, kueri tabel sistem [SVV\_TABLE\_INFO](https://docs.aws.amazon.com/redshift/latest/dg/r_SVV_TABLE_INFO.html).

## Operator agregat
<a name="aggregate-operators"></a>

Paket kueri menggunakan operator berikut dalam kueri yang melibatkan fungsi dan `GROUP BY` operasi agregat:
+ **Agregat** — Operator untuk fungsi agregat skalar seperti dan `AVG` `SUM`
+ **HashAggregate**— Operator untuk fungsi agregat dikelompokkan yang tidak disortir
+ **GroupAggregate**— Operator untuk fungsi agregat dikelompokkan yang diurutkan

### Mengurutkan operator
<a name="operators-sort"></a>

Paket kueri menggunakan operator berikut ketika kueri harus mengurutkan atau menggabungkan kumpulan hasil:
+ **Urutkan** - Mengevaluasi `ORDER BY` klausa dan operasi pengurutan lainnya, seperti jenis yang diperlukan oleh `UNION` kueri dan gabungan, `SELECT DISTINCT` kueri, dan fungsi jendela
+ **Merge** — Menghasilkan hasil akhir yang diurutkan menurut hasil diurutkan menengah yang berasal dari operasi paralel

### UNION, INTERSECT, dan KECUALI operator
<a name="operators-union"></a>

Paket kueri menggunakan operator berikut untuk kueri yang melibatkan operasi set dengan`UNION`,`INTERSECT`, dan`EXCEPT`:
+ **Subquery** - Digunakan untuk menjalankan `UNION` query
+ **Hash Intersect Distinct** - Digunakan untuk menjalankan query `INTERSECT`
+ **SetOp Kecuali** - Digunakan untuk menjalankan `EXCEPT` (atau`MINUS`) kueri

### Operator lainnya
<a name="operators-other"></a>

Operator berikut juga sering muncul dalam `EXPLAIN` output untuk kueri rutin:
+ **Unik** - Menghapus duplikat untuk `SELECT DISTINCT` kueri dan kueri `UNION`
+ **Batas — Memproses** `LIMIT` klausa
+ **Jendela** - Menjalankan fungsi jendela
+ **Hasil** - Menjalankan fungsi skalar yang tidak melibatkan akses tabel apa pun
+ **Subplan** - Digunakan untuk subquery tertentu
+ **Jaringan** - Mengirim hasil antara ke node pemimpin untuk diproses lebih lanjut
+ **Terwujud** - Menyimpan baris untuk input ke gabungan loop bersarang dan beberapa gabungan gabungan