PostgreSQL vs MySQL: Pilih Mana buat Analis Data
Blog/Tutorial SQL/PostgreSQL vs MySQL: Pilih Mana buat Analis Data

PostgreSQL vs MySQL: Pilih Mana buat Analis Data

BimaBima
·13 Juni 2026·9 menit baca

Penulis

Bima

Bima

Founder & Data Professional

Bagikan

TL;DR

Buat analis data, PostgreSQL biasanya pilihan yang lebih pas soalnya fitur analitiknya lebih lengkap: window function yang matang, CTE rekursif, tipe data array dan JSON yang kuat, dan fungsi statistik bawaan. MySQL lebih ringan, lebih gampang di-hosting murah, dan cukup buat query CRUD sehari-hari. Kalau kamu baru belajar SQL, sintaks dasarnya 90 persen sama — pilih yang dipakai kantor kamu.

PostgreSQL dan MySQL sama-sama gratis, sama-sama matang, dan sama-sama dipakai perusahaan besar. Buat analis data, PostgreSQL biasanya pilihan yang lebih pas.

Alasannya sederhana: fitur analitiknya lebih lengkap.

Tapi kalau kantor kamu pakai MySQL, kamu gak perlu resign. Sembilan puluh persen sintaks SQL-nya sama, dan kebanyakan analisa tetap bisa dikerjain.

Artikel ini bahas bedanya yang beneran kerasa buat kerjaan analis, bukan daftar fitur yang gak pernah kamu sentuh.

Apa bedanya PostgreSQL dan MySQL secara singkat?

Keduanya database relasional open source. Kamu nulis SQL, mereka balikin tabel.

PostgreSQL lahir dari riset akademik dan sejak awal fokus ke kelengkapan fitur dan kepatuhan standar SQL. MySQL lahir dari kebutuhan aplikasi web dan fokus ke kecepatan baca dan kesederhanaan.

AspekPostgreSQLMySQL
Window functionAda sejak lama, lengkapAda mulai versi 8.0
CTE rekursifAdaAda (8.0+)
Klausa FILTERAdaGak ada — pakai CASE WHEN
Median bawaanPERCENTILE_CONTGak ada — harus diakalin
Tipe arrayAdaGak ada
Dukungan JSONJSONB, bisa di-indexJSON, lebih terbatas
RegexOperator ~, POSIX lengkapREGEXP_LIKE (8.0+)
Query baca sederhanaCepatSedikit lebih cepat
Hosting murahAda, tapi lebih sedikitAda di mana-mana

Fitur apa yang paling kerasa bedanya buat analis?

1. Klausa FILTER — agregat bersyarat yang ringkas

Ini yang paling sering aku kangenin waktu kerja di MySQL.

-- PostgreSQL
SELECT kota,
       COUNT(*)                                 AS total_transaksi,
       COUNT(*) FILTER (WHERE total > 100000)   AS transaksi_besar,
       SUM(total) FILTER (WHERE produk = 'Beras 5kg') AS omzet_beras
FROM transaksi
GROUP BY kota;

Di MySQL, hal yang sama harus ditulis pakai CASE WHEN:

-- MySQL
SELECT kota,
       COUNT(*)                                        AS total_transaksi,
       SUM(CASE WHEN total > 100000 THEN 1 ELSE 0 END) AS transaksi_besar,
       SUM(CASE WHEN produk = 'Beras 5kg' THEN total ELSE 0 END) AS omzet_beras
FROM transaksi
GROUP BY kota;

Hasilnya sama. Tapi versi PostgreSQL lebih pendek dan lebih gampang dibaca waktu kondisinya ada lima.

2. Median — PostgreSQL punya, MySQL nggak

Median itu angka yang sering dibutuhkan analis, terutama buat data transaksi yang miring.

-- PostgreSQL: satu baris
SELECT kota,
       PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY total) AS median_transaksi
FROM transaksi
GROUP BY kota;

Di MySQL, gak ada fungsi median bawaan. Kamu harus ngakalin pakai ROW_NUMBER dan subquery — delapan baris buat hal yang di PostgreSQL cuma satu.

Kenapa median penting? Karena rata-rata gampang ketipu outlier. Detailnya ada di artikel Box Plot.

3. Window function — sama, tapi cek versi MySQL-nya

Di MySQL 8.0 ke atas, sintaks window function persis sama kayak PostgreSQL.

SELECT kota, produk, total,
       SUM(total) OVER (PARTITION BY kota ORDER BY tanggal) AS omzet_kumulatif,
       RANK()     OVER (PARTITION BY kota ORDER BY total DESC) AS peringkat
FROM transaksi;

Masalahnya, MySQL 5.7 gak punya window function sama sekali. Dan versi itu masih jalan di banyak sistem lama di Indonesia.

Kalau kantormu masih 5.7, ROW_NUMBER dan SUM() OVER bakal error. Kamu harus balik ke subquery yang panjang.

Cek versinya dulu sebelum janji ke atasan.

4. Tipe data — PostgreSQL lebih kaya

PostgreSQL punya tipe array. Satu kolom bisa nyimpen banyak nilai sekaligus, dan bisa langsung di-query.

Buat data JSON, PostgreSQL punya JSONB yang bisa di-index. Jadi query ke isi JSON tetap cepat walau tabelnya besar. MySQL punya JSON juga, tapi kemampuan indexing-nya lebih terbatas.

Kalau kamu sering nangani data dari API atau log aplikasi, ini bedanya kerasa.

Kapan MySQL justru pilihan yang lebih baik?

Tiga situasi.

Hosting murah. Hampir semua shared hosting di Indonesia nyediain MySQL default. PostgreSQL ada, tapi lebih jarang dan sering lebih mahal.

Aplikasi web yang bacanya banyak. Buat query sederhana dengan ribuan koneksi bersamaan, MySQL biasanya sedikit lebih cepat dan lebih hemat memori.

Kantor kamu udah pakai MySQL. Ini alasan paling praktis. Migrasi database itu proyek berbulan-bulan. Kalau analisamu masih bisa jalan, jangan usul pindah cuma buat FILTER clause.

Contoh kasus: query yang sama di dua database

Aku jalanin query analitik yang sama ke dataset toko_berkah — 4.812 baris transaksi — di PostgreSQL 16 dan MySQL 8.0, keduanya di laptop yang sama.

Query-nya: hitung omzet kumulatif per kota, peringkat produk, dan median transaksi.

UkuranPostgreSQL 16MySQL 8.0
Baris kode query1431
Fungsi bawaan yang kepake42 (2 harus diakalin)
Waktu eksekusi82 ms74 ms
Hasilnya sama?Ya — angkanya identik

Perhatiin: MySQL 8 ms lebih cepat. Di dataset segini, performa bukan pembeda.

Yang jadi pembeda: 31 baris versus 14 baris. Dua kali lipat lebih panjang, dan itu artinya dua kali lipat lebih banyak tempat buat salah.

Query yang panjang itu bukan cuma capek diketik. Query yang panjang lebih susah di-review dan lebih gampang ada bug diam-diam.

Apa yang perlu kamu perhatikan waktu pindah database?

Gabung string. PostgreSQL pakai dua garis pipa, MySQL pakai CONCAT. Ini yang paling sering bikin error waktu copy-paste query.

Sintaks regex. PostgreSQL pakai operator tilde, MySQL pakai REGEXP_LIKE. Polanya sendiri mirip. Bahasan lengkapnya ada di Regex di SQL.

Nama fungsi tanggal. PostgreSQL punya DATE_TRUNC, MySQL punya DATE_FORMAT. Beda nama, tujuan sama.

Huruf besar-kecil nama tabel. Di MySQL, ini tergantung sistem operasinya. Di PostgreSQL, nama tanpa tanda kutip otomatis jadi huruf kecil. Ini jebakan yang bikin bingung waktu pindah.

Batas hasil. Kabar baiknya, LIMIT sama di keduanya. LIMIT jalan tanpa modifikasi.

FAQ

PostgreSQL atau MySQL yang lebih bagus buat analis data?

PostgreSQL, buat kebanyakan kasus analitik. Alasannya: fungsi statistik bawaan kayak PERCENTILE_CONT, klausa FILTER yang bikin agregat bersyarat jadi ringkas, dan dukungan JSON yang lebih matang. MySQL cukup buat query harian sederhana, tapi begitu analisamu makin rumit, kamu bakal sering nemu fitur yang gak ada.

Sintaks SQL-nya beda banget gak?

Nggak. Sekitar 90 persen sama. SELECT, WHERE, GROUP BY, JOIN, ORDER BY, LIMIT — semuanya identik. Yang beda cuma di detail: gabung string, sintaks regex, dan beberapa nama fungsi tanggal. Ilmu SQL kamu tetap kepake pindah database.

MySQL punya window function gak?

MySQL 8.0 ke atas punya, sintaksnya sama persis kayak PostgreSQL. Tapi MySQL 5.7 ke bawah gak punya sama sekali. Kalau kantor kamu masih pakai versi itu, ROW_NUMBER dan SUM OVER gak bakal jalan, dan kamu harus ngakalin pakai subquery.

Yang mana yang lebih cepat?

Tergantung beban kerjanya. MySQL biasanya lebih cepat buat query baca sederhana dengan banyak koneksi bersamaan. PostgreSQL lebih kuat buat query analitik rumit dengan banyak JOIN dan agregasi. Buat dataset di bawah 10 juta baris, bedanya jarang kerasa.

Kalau baru belajar SQL, mulai dari mana?

Pilih yang dipakai kantor atau perusahaan yang mau kamu lamar. Kalau bebas, mulai dari PostgreSQL — fitur analitiknya lengkap, jadi kamu bisa langsung latihan window function dan CTE tanpa mentok. Jangan pusing milih dulu, dasar SQL-nya sama.

Jadi pilih yang mana?

Kalau kamu bebas milih dan kerjanya analisa: PostgreSQL.

Kalau kantor kamu udah pakai MySQL: pakai MySQL, dan pastiin versinya 8.0 ke atas biar window function jalan.

Kalau kamu baru belajar: jangan pusing. Sintaks dasarnya sama, dan pindah database cuma butuh sehari adaptasi.

Dokumentasi resmi keduanya bagus dan gratis — mulai dari dokumentasi PostgreSQL.

Buat latihan window function dan CTE tanpa install apa-apa, coba editor interaktif di NgulikSQL. Terus lanjut baca Regex di SQL buat lihat gimana bedanya sintaks kedua database ini di kasus nyata.

Coba Langsung

Mau praktek langsung? Mulai latihan SQL gratis

Latihan interaktif, langsung di browser.

Buka NgulikSQL →
Bagikan:
Bima
Ditulis oleh

Bima

Founder & Data Professional

Founder Ngulik Data. Passionate about making data analysis accessible for everyone.

Artikel Terkait

7 SQL Client Gratis Terbaik buat Analis Data (2026)
Tutorial SQL
10 Juli 2026•9 menit baca

7 SQL Client Gratis Terbaik buat Analis Data (2026)

Nggak perlu bayar buat nulis query. Ini 7 SQL client gratis yang beneran dipakai analis, plus kelebihan dan kekurangannya masing-masing.

BimaBima
SQL Style Guide: Cara Nulis Query yang Enak Dibaca Tim
Tutorial SQL
7 Juli 2026•9 menit baca

SQL Style Guide: Cara Nulis Query yang Enak Dibaca Tim

Sepuluh aturan SQL style guide yang bikin query kamu kebaca sama tim — dan sama kamu sendiri 6 bulan lagi. Lengkap dengan contoh sebelum-sesudah.

BimaBima
Take-Home Test SQL Data Analyst: Contoh Soal + Cara Ngerjainnya
Tutorial SQL
4 Juli 2026•11 menit baca

Take-Home Test SQL Data Analyst: Contoh Soal + Cara Ngerjainnya

Contoh soal take-home test SQL yang beneran dipakai perusahaan, dikerjain step by step — dari baca soal, nulis query, sampai nyusun insight yang bikin recruiter nengok.

BimaBima
Kembali ke Blog
Ngulik Data logoNgulik Data

Platform edukasi data lengkap untuk professionals Indonesia. Belajar SQL, Data Analysis, dan lebih banyak lagi dengan praktek langsung dan feedback real-time.

Copyright © 2026 - All rights reserved

LINKS
SupportPricingDatasetBlogAffiliates
LEGAL
Terms of servicesPrivacy policy
Ngulik Data
DatasetLeaderboardBlogStore