

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

# Rencana kueri EXPLY
<a name="explain-query-plan"></a>

PostgreSQL menyediakan `EXPLAIN` opsi `EXPLAIN ANALYZE` dan untuk mengembalikan rencana kueri dengan rincian tentang bagaimana kueri akan dijalankan.

## Pernyataan EXPLY
<a name="explain"></a>

`EXPLAIN`Pernyataan tersebut mengembalikan rencana kueri yang dihasilkan oleh perencana PostgreSQL untuk pernyataan yang diberikan. Rencana kueri menunjukkan hal berikut:
+ Bagaimana tabel yang terlibat dalam pernyataan akan dipindai (misalnya, dengan pemindaian indeks atau pemindaian berurutan)
+ Bagaimana beberapa tabel akan digabungkan (misalnya, bergabung dengan hash, gabungan gabungan, atau gabungan loop bersarang)

Memahami rencana sangat penting ketika meningkatkan kinerja kueri. Setelah Anda memahami rencana, Anda dapat fokus pada di mana kueri terlalu lama dan mengambil tindakan untuk mengurangi waktu.

## Menggunakan EXPLY ANALYSIS
<a name="explain-analyze"></a>

Dalam PostgreSQL`EXPLAIN`, hanya akan menghasilkan rencana untuk pernyataan yang diberikan. Jika Anda menambahkan `ANALYZE` kata kunci, `EXPLAIN` akan mengembalikan rencana, menjalankan kueri, dan menampilkan runtime aktual dan jumlah baris untuk setiap langkah. Ini sangat diperlukan untuk menganalisis kinerja kueri.

**penting**  
Saat menggunakan`EXPLAIN ANALYZE`, berhati-hatilah dengan`INSERT`,`UPDATE`, dan`DELETE`.

## Cara membaca rencana kueri EXPLOW
<a name="read"></a>

*Sebuah rencana query PostgreSQL adalah struktur pohon yang terdiri dari beberapa node.* Rencana `EXPLAIN` kueri menunjukkan langkah-langkah yang digunakan mesin database untuk menjalankan kueri. Paket kueri memberikan informasi berikut:
+ Jenis operasi yang dilakukan, seperti pemindaian sekuensial, pemindaian indeks, atau gabungan loop bersarang.
+ Label, seperti`Seq Scan`,`Index Scan`, atau`Nested Loop`, untuk menggambarkan operasi yang sedang dilakukan.
+ Nama tabel atau indeks yang sedang diproses oleh kueri.
+ Kolom biaya dan baris dengan informasi tentang perkiraan biaya dalam unit komputasi yang sewenang-wenang dan jumlah baris yang diproses.
+ Kondisi filter dari setiap filter diterapkan pada operasi, seperti `where` kondisi.
+ Representasi visual dari langkah-langkah, dengan setiap operasi ditampilkan sebagai simpul dan panah yang menghubungkan operasi. Urutan operasi ditunjukkan dari kiri ke kanan, dengan operasi sebelumnya dimasukkan ke dalam operasi selanjutnya.

Tangkapan layar berikut menunjukkan rencana kueri untuk pemindaian berurutan.



![\[Rencana kueri ditampilkan pada tab Output Data di pgAdmin.\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/postgresql-query-tuning/images/query-plan.png)


Perkiraan biaya `(cost=0.00..32.60 rows=2260 width=8)` berarti bahwa PostgreSQL mengharapkan bahwa kueri akan membutuhkan 32,60 unit komputasi untuk mengembalikan hasil.

`0.00`Nilainya adalah biaya di mana node ini dapat mulai bekerja (dalam hal ini, waktu startup untuk kueri). `rows`Nilainya adalah perkiraan jumlah baris yang akan dikembalikan oleh pemindaian sekuensial. `width`Nilainya adalah perkiraan ukuran dalam byte dari baris yang dikembalikan.

Karena contoh ditampilkan `EXPLAIN` dengan `ANALYZE` opsi, kueri dijalankan, dan informasi waktu ditangkap. Hasilnya `(actual time=0.120..0.121 rows=1 loops=1)` berarti sebagai berikut:
+ Pemindaian sekuensial dijalankan satu kali (`loops`nilainya).
+ Pemindaian mengembalikan satu baris.
+ Waktu sebenarnya adalah 0,12 milidetik.