Lewati ke konten utama

Materialized View di PostgreSQL

Pelajari cara menyimpan hasil sebuah kueri dengan bantuan materialized view di PostgreSQL.
Diperbarui 28 Sep 2026  · 6 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Jika Anda sering bekerja dengan SQL (lebih disukai pengguna PostgreSQL) atau pada tingkat rata-rata untuk melakukan kueri ke database, mungkin Anda pernah menulis sejumlah kueri kompleks untuk menjawab pertanyaan-pertanyaan penting. Terkadang Anda juga perlu menggunakan hasil kueri tersebut cukup sering dalam pekerjaan Anda. Menjalankan kueri kompleks berkali-kali bisa mahal. Bagaimana jika ada cara untuk melakukan cache hasil kueri kompleks demi meningkatkan kinerja? Nah, materialized view hadir untuk Anda.

Anda mungkin berpikir ada view sederhana yang juga dapat menyimpan hasil sebuah kueri. Namun, view sederhana berbeda dari materialized view dalam banyak hal. Berikut pernyataan dokumentasi resmi PostgreSQL tentang view sederhana -

View tidak dimaterialisasi secara fisik. Sebaliknya, kueri dijalankan setiap kali view direferensikan dalam sebuah kueri.

Pernyataan ini berarti view sederhana tidak disimpan secara fisik di dalam database. Setiap kali sebuah view digunakan dalam kueri, kueri yang membuat view tersebut akan dieksekusi. Inilah yang membuat view sederhana sedikit kurang efisien terkait waktu akses.

Di sisi lain, materialized view memberikan banyak fleksibilitas dengan memungkinkan Anda menyimpan sebuah view secara fisik di dalam database. Dan Anda dapat mengoperasikan materialized view sebagaimana Anda melakukannya pada view sederhana (namun dengan waktu akses yang lebih rendah). Sepanjang tutorial ini, Anda akan mempelajari materialized view di PostgreSQL. Dalam salah satu webinarnya, Chief Data Scientist DataCamp David Robinson menunjukkan bagaimana ia menggunakan materialized view untuk menyimpan hasil kueri kompleks secara efektif.

Catatan agar dapat mengikuti tutorial ini, Anda sebaiknya sudah familiar dengan materi yang dibahas dalam kursus Joining Data in SQL.

Penyiapan Awal Database

Lebih baik menyiapkan sebuah database di PostgreSQL dan membuat tabel dasar di dalamnya agar Anda dapat melakukan kueri secara efektif. Ini juga akan membantu Anda pada bagian-bagian selanjutnya dari tutorial ini. Anda dapat me-restore backup database ini yang berisi tabel yang akan Anda gunakan di tutorial ini. Jika Anda ingin mempelajari cara me-restore backup database di PostgreSQL, Anda dapat mengikuti bagian pertama dari tutorial ini.

Jika Anda berhasil me-restore backup tersebut, Anda akan melihat sebuah tabel bernama international_debt di dalam database (Anda perlu membuat database terlebih dahulu jika belum ada). Mari cepat melihat beberapa baris pertama tabel tersebut (kueri select sederhana akan membantu Anda melakukan ini) -

database

Tabel ini berisi informasi statistik utang berbagai negara di seluruh dunia untuk tahun berjalan dalam berbagai kategori (lihat kolom indicator_name, indicator_code). Kolom debt menunjukkan jumlah utang (dalam USD) yang dimiliki suatu negara pada kategori tertentu. Data ini berada pada domain ekonomi dan sering digunakan untuk menganalisis kondisi ekonomi berbagai negara. Data dikumpulkan dari Bank Dunia.

Sekarang setelah Anda berhasil menyiapkan database, Anda siap melanjutkan ke bagian-bagian berikutnya dari tutorial ini.

Membuat Materialized View

Mari buat materialized view dari kueri berikut -

select country_name,
sum(debt) as total_debt
from international_debt
group by country_name order by country_name;

Kueri mengembalikan nama negara beserta total utangnya (dalam urutan alfabet). Output kueri seharusnya terlihat seperti ini -

Sekarang materialized view-nya -

CREATE MATERIALIZED VIEW country_total_debt
as
  select country_name,
  sum(debt) as total_debt
  from international_debt
  group by country_name order by country_name;

Anda akan mendapatkan pesan sukses seperti - Query returned successfully: 124 rows affected, 242 ms execution time.

Menyegarkan Materialized View

Anda juga dapat menginstruksikan PostgreSQL untuk tidak memuat data apa pun ke dalam materialized view saat Anda membuatnya dengan menyertakan opsi WITH NO DATA -

CREATE MATERIALIZED VIEW country_total_debt_2
as
  select country_name,
  sum(debt) as total_debt
  from international_debt
  group by country_name order by country_name
WITH NO DATA;

Anda akan mendapatkan pesan - Query returned successfully with no result in 41 ms. Perhatikan perbedaan antara kedua pesan output. Jika Anda menambahkan opsi WITH NO DATA, maka materialized view kosong akan dibuat. Anda tidak dapat melakukan kueri pada materialized view ini. Namun, Anda dapat mengisinya dengan mengeksekusi -

REFRESH MATERIALIZED VIEW country_total_debt_2;

Melakukan Kueri pada Materialized View

Sekarang, Anda seharusnya sudah memiliki dua materialized view (country_total_debt, country_total_debt_2) yang dibuat. Mari jalankan kueri select sederhana menggunakan salah satunya -

select * from country_total_debt_2;

Kueri tersebut akan mengembalikan sesuatu seperti -

query

Outputnya persis sama dengan kueri yang kita bungkus di dalam materialized view. Anda juga dapat menjalankan kueri pada materialized view dengan fungsi agregat -

select max(total_debt) from country_total_debt_2;

Anda akan mendapatkan - output

Menghapus Materialized View

Materialized view dapat dihapus sama seperti cara menghapus tabel di PostgreSQL. Anda hanya perlu menyertakan Materialized View setelah Drop -

Drop Materialized View country_total_debt_2;

Untuk membandingkan MySQL dengan pesaing populernya yang kedua, lihat perbandingan mendalam kami PostgreSQL vs. MySQL.

Kesimpulan

Sampai di sini tutorialnya. Terima kasih sudah membaca hingga akhir. Dalam tutorial ini, Anda belajar tentang materialized view di PostgreSQL, dan cara mengoperasikannya. Karena efektivitasnya, materialized view banyak digunakan dalam gudang data. Jika Anda tertarik mempelajari kueri yang lebih kompleks, Anda dapat melihat kursus DataCamp berikut:

Topik
SQL

Kursus SQL

Kursus

Manipulasi Data di SQL

4 jam
338K
Kuasai kueri SQL yang kompleks yang diperlukan untuk menjawab berbagai pertanyaan ilmu data dan menyiapkan set data yang kuat untuk analisis di PostgreSQL.
Lihat DetailRight Arrow
Mulai Kursus
Lihat SelengkapnyaRight Arrow
Terkait

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat SelengkapnyaLihat Selengkapnya