Indeks Komposit dan Urutan Kolom
Tentukan urutan kolom untuk indeks komposit, pahami aturan awalan-kiri, dan rancang indeks yang mencakup beberapa kueri
Indeks Komposit dan Urutan Kolom adalah pelajaran SQL Academy gratis di CoddyKit. Ini adalah pelajaran 2 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 Gabungan
Indeks pada lebih dari satu kolom. B-tree PostgreSQL dapat mengindeks hingga 32 kolom; dalam praktiknya, 2–4 kolom adalah jumlah yang umum.
CREATE INDEX orders_user_created_idx ON orders(user_id, created_at DESC);Mengapa Menggunakannya
Dua skenario:
- Kueri memfilter beberapa kolom sekaligus
- Kueri memfilter satu kolom dan mengurutkan berdasarkan kolom lainnya
Aturan Prefiks Paling Kiri
Indeks pada (a, b, c) dapat melayani:
WHERE a = ?WHERE a = ? AND b = ?WHERE a = ? AND b = ? AND c = ?
Indeks ini NOT melayani WHERE b = ? saja maupun WHERE c = ?.
Urutan Itu Penting
Letakkan kolom yang paling selektif DAN paling sering difilter di urutan pertama. Kolom kesetaraan sebelum kolom rentang:
CREATE INDEX orders_user_total_idx ON orders(user_id, total);
-- Best for: WHERE user_id = 42 AND total > 100
-- Also OK: WHERE user_id = 42
-- Useless: WHERE total > 100 (without user_id)Kesetaraan vs Rentang
Predikat kesetaraan menggunakan indeks secara efisien; rentang menggunakannya tetapi membatasi kegunaan selanjutnya. Kolom kesetaraan harus diletakkan lebih dahulu:
-- Index: (status, created_at)
WHERE status = 'paid' AND created_at >= ... -- both columns used
WHERE created_at >= ... AND status = 'paid' -- index used for status, range scan on created_atUrutan Indeks = Urutan Pengurutan
Indeks pada (user_id, created_at DESC) melayani "pesanan pengguna, terbaru lebih dahulu" tanpa langkah pengurutan:
EXPLAIN ANALYZE
SELECT * FROM orders
WHERE user_id = 42
ORDER BY created_at DESC LIMIT 10;
-- Index Scan, no Sort node neededMenyertakan Kolom Non-Kunci (INCLUDE)
PG 11+ mendukung INCLUDE untuk indeks "yang mencakup semua kolom"—kolom tambahan disimpan di daun, tetapi tidak digunakan untuk pengurutan:
CREATE INDEX orders_user_idx ON orders(user_id)
INCLUDE (total, status);
-- Enables Index-Only Scan for queries that need just these columns.Kapan Tidak Membuat Indeks Gabungan
Jika kolom dikuerikan secara independen, dua indeks satu kolom dapat melayani lebih banyak kueri. Indeks gabungan menukar fleksibilitas dengan "semua kebutuhan satu kueri".
Kombinasi Indeks Bitmap
PostgreSQL dapat menggabungkan beberapa indeks satu kolom melalui Pemindaian Indeks Bitmap:
EXPLAIN ANALYZE
SELECT * FROM orders WHERE user_id = 42 AND status = 'paid';
-- BitmapAnd of two index scans — works without a composite, but slower than the right composite.Waspadai Pembengkakan Indeks
Indeks gabungan lebih lebar. Indeks yang lebih lebar = berkas lebih besar = lebih sedikit bagian indeks yang muat dalam tembolok. Tentukan dengan cermat.
Menentukan Urutan Kolom — Contoh Terapan
Kueri: “pesanan untuk satu pengguna dalam rentang tanggal, diurutkan berdasarkan tanggal”.
-- Index design:
CREATE INDEX orders_user_created_idx
ON orders(user_id, created_at DESC);
-- Query (efficiently uses the index):
SELECT * FROM orders
WHERE user_id = 42
AND created_at >= NOW() - INTERVAL '30 days'
ORDER BY created_at DESC LIMIT 10;Ringkasan
Indeks gabungan melayani penyaringan berdasarkan beberapa kolom dan menghindari langkah pengurutan.
- Aturan awalan paling kiri
- Kolom kesetaraan terlebih dahulu
- INCLUDE untuk kolom yang hanya diperlukan untuk pencakupan
- Dua indeks tunggal atau satu indeks gabungan — bergantung pada campuran kueri
Pemeriksaan Singkat
Anda memiliki indeks pada (user_id, status, created_at). Kueri mana yang CANNOT menggunakannya secara efisien?
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Indeks Komposit dan Urutan Kolom” gratis?
Ya — teks lengkap “Indeks Komposit dan Urutan Kolom” 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 Komposit dan Urutan Kolom”?
Tentukan urutan kolom untuk indeks komposit, pahami aturan awalan-kiri, dan rancang indeks yang mencakup beberapa kueri 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 2 dari 4.
Berapa lama pelajaran “Indeks Komposit dan Urutan Kolom” 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
- Indeks B-tree vs Hash vs GiST vs GIN
- Indeks Komposit dan Urutan Kolom
- Indeks Parsial dan Ekspresi
- Pemeliharaan Indeks dan Bloat