Indeks untuk Kueri Umum
Tambahkan indeks untuk kueri yang paling sering dijalankan: berdasarkan pengguna, tanggal, dan kunci asing; lalu ukur dampaknya dengan EXPLAIN.
Indeks untuk Kueri Umum adalah pelajaran SQL Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar SQL Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Academy mencakup 4 pelajaran total.
Apa Itu Indeks?
Indeks adalah struktur data terpisah di disk yang memungkinkan basis data menemukan baris berdasarkan nilai kolom tanpa memindai tabel. Implementasi klasiknya adalah pohon-B.
Indeks Menukar Kecepatan Tulis dengan Baca
Setiap indeks membuat INSERT/UPDATE/DELETE sedikit lebih lambat (indeks juga harus diperbarui). Jangan menambahkan indeks yang tidak Anda perlukan.
Kunci Utama Mendapat Indeks Otomatis
Mendeklarasikan PRIMARY KEY secara otomatis membuat indeks pohon-B yang unik. Hal yang sama berlaku untuk kolom UNIQUE.
Buat Indeks pada Kolom Kunci Asing
PostgreSQL TIDAK secara otomatis membuat indeks pada sisi anak dari FK. Selalu tambahkan indeks — tanpa indeks tersebut, penghapusan induk akan memindai semua baris anak:
CREATE INDEX comments_post_id_idx ON comments(post_id);
CREATE INDEX comments_author_id_idx ON comments(author_id);Buat Indeks pada Kolom yang Digunakan dalam WHERE
Jika Anda sering memfilter berdasarkan created_at, buat indeks untuk kolom tersebut:
CREATE INDEX posts_created_at_idx ON posts(created_at DESC);
-- Query benefits:
SELECT * FROM posts ORDER BY created_at DESC LIMIT 20;Indeks Komposit
Untuk filter dengan banyak kolom, indeks komposit dapat jauh lebih cepat daripada dua indeks satu kolom:
CREATE INDEX posts_author_published_idx
ON posts(author_id, published_at DESC);
-- This query uses the index for both filter and sort:
SELECT * FROM posts
WHERE author_id = 42
ORDER BY published_at DESC LIMIT 10;Aturan Prefiks Kiri
Indeks komposit (a, b, c) dapat melayani WHERE a = ? dan WHERE a = ? AND b = ? — tetapi TIDAK dapat melayani WHERE b = ? saja. Urutan penting.
Indeks Parsial
Indeks hanya baris yang Anda kueri:
-- Only published posts:
CREATE INDEX posts_published_idx
ON posts(published_at DESC)
WHERE published_at IS NOT NULL;
-- Smaller index, faster lookups for the common case.Indeks Ekspresi
Buat indeks dari fungsi sebuah kolom:
CREATE INDEX users_email_lower_idx ON users(LOWER(email));
-- Query that uses it:
SELECT * FROM users WHERE LOWER(email) = LOWER($1);Jangan Membuat Terlalu Banyak Indeks
Aturan praktis:
- Buat indeks PK ✓ (otomatis)
- Buat indeks kolom UNIQUE ✓ (otomatis)
- Buat indeks kolom FK ✓
- Buat indeks pada kolom yang digunakan dalam WHERE / JOIN / ORDER BY pada kueri penting Anda
- Jangan membuat indeks pada kolom dengan selektivitas sangat rendah (misalnya boolean dengan pembagian 50/50)
Ukur dengan EXPLAIN
Sebelum dan sesudah menambahkan indeks, jalankan EXPLAIN ANALYZE untuk memastikan perencana kueri menggunakannya:
EXPLAIN ANALYZE
SELECT * FROM posts WHERE author_id = 42 ORDER BY published_at DESC LIMIT 10;Ringkasan
Untuk blog kita: buat indeks pada FK (post_id pada komentar, author_id pada postingan dan komentar) serta (author_id, published_at DESC) pada postingan untuk kueri "postingan terbaru berdasarkan pengguna".
Pemeriksaan Cepat
Anda menambahkan kunci asing orders.user_id REFERENCES users(id). Indeks apa, jika ada, yang sebaiknya Anda buat?
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Indeks untuk Kueri Umum” gratis?
Ya — teks lengkap “Indeks untuk Kueri Umum” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Academy, upgrade ke CoddyKit PRO. Kursus SQL Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Indeks untuk Kueri Umum”?
Tambahkan indeks untuk kueri yang paling sering dijalankan: berdasarkan pengguna, tanggal, dan kunci asing; lalu ukur dampaknya dengan EXPLAIN. Kamu berlatih SQL Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai SQL Academy?
Tidak diperlukan pengalaman sebelumnya. SQL Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “Indeks untuk Kueri Umum” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran SQL Academy ini?
Ya. Setiap pelajaran SQL Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Memodelkan Blog: Pengguna, Kiriman, Komentar
- Memilih Kunci dan Tipe
- Indeks untuk Kueri Umum
- Mengisi Basis Data dengan Data Pengujian