0Pricing
SQL Interview Prep · Pelajaran

Indeks B-Tree dan Manfaatnya

Apa yang sebenarnya disimpan oleh indeks dan operasi yang dipercepatnya.

Indeks B-Tree dan Manfaatnya adalah pelajaran SQL Interview Prep gratis di CoddyKit. Ini adalah pelajaran 1 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 Interview Prep, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Interview Prep mencakup 4 pelajaran total.

Mengapa Pewawancara Menanyakan Indeks

Ketika pewawancara berkata 'kueri ini lambat, apa yang Anda lakukan?', jawaban yang hampir selalu mereka harapkan melibatkan sebuah indeks. Indeks adalah pengungkit terbesar untuk kinerja baca, sehingga indeks membedakan kandidat yang hanya menghafal sintaksis dari kandidat yang memahami cara basis data menemukan baris.

Dalam pelajaran ini, Anda akan membangun model mental yang tepat tentang indeks pohon-B: apa yang disimpannya, operasi apa yang dipercepatnya, dan cara membicarakannya seperti seorang insinyur berpengalaman.

Masalah yang Diselesaikan oleh Indeks

Tanpa indeks, menemukan baris yang sesuai dengan suatu kondisi memaksa basis data membaca setiap baris dalam tabel. Ini disebut pemindaian berurutan (atau pemindaian tabel penuh). Pada tabel berisi satu juta baris, itu berarti satu juta pemeriksaan baris meskipun hanya satu baris yang cocok.

Indeks adalah struktur data terpisah dan terurut yang memungkinkan mesin basis data langsung menuju baris yang cocok, seperti indeks buku yang memungkinkan Anda menemukan suatu topik tanpa membaca setiap halaman.

-- No index: the engine reads ALL rows to find this one
SELECT * FROM users WHERE email = 'ada@example.com';

Apa yang Sebenarnya Disimpan oleh Pohon-B

Indeks bawaan di PostgreSQL, MySQL, SQL Server, dan sebagian besar mesin basis data adalah pohon-B (pohon seimbang). Indeks ini menyimpan nilai kolom yang diindeks dalam urutan terurut, yang ditata menjadi pohon halaman yang dangkal.

  • Setiap simpul daun menyimpan kunci indeks serta penunjuk ke baris tabel yang sebenarnya.
  • Pohon tetap seimbang, sehingga setiap pencarian hanya menyentuh beberapa halaman, berapa pun ukuran tabelnya.

Pencarian berjalan dari akar ke daun dalam sekitar log(N) langkah, bukan dengan memindai seluruh N baris.

Membuat Indeks Pertama Anda

Anda membuat indeks pohon-B dengan CREATE INDEX. Beri nama yang jelas agar peninjau dapat langsung mengetahui tabel dan kolomnya.

Setelah indeks ini tersedia, kueri yang menyaring berdasarkan email dapat menggunakannya untuk menemukan baris yang cocok dengan hanya beberapa pembacaan halaman, bukan pemindaian penuh.

CREATE INDEX idx_users_email ON users (email);

-- Now this lookup uses the index instead of scanning
SELECT * FROM users WHERE email = 'ada@example.com';

Operasi yang Dipercepat oleh Pohon-B

Karena pohon-B mempertahankan nilai dalam keadaan terurut, indeks ini mempercepat jauh lebih banyak hal daripada kecocokan persis. Pewawancara akan senang jika Anda menyebutkannya secara tepat:

  • Kesetaraan: WHERE email = ?
  • Rentang: WHERE age > 30, BETWEEN, <, >=
  • Pencocokan awalan: WHERE name LIKE 'Ada%' (namun NOT '%da')
  • ORDER BY pada kolom yang diindeks, sehingga pengurutan dapat dihindari
  • MIN/MAX, karena keduanya berada di ujung struktur yang terurut

Contoh: Kueri Rentang

Perhatikan tabel orders yang berisi jutaan baris. Sebuah kueri pelaporan meminta pesanan terbaru. Dengan indeks pada created_at, mesin basis data mencari posisi awal rentang dalam indeks terurut, lalu bergerak maju hanya sejauh yang diperlukan.

Indeks mengubah pemindaian seluruh tabel menjadi pemindaian rentang terbatas, dengan hanya membaca bagian yang memenuhi syarat.

CREATE INDEX idx_orders_created_at ON orders (created_at);

SELECT order_id, total
FROM orders
WHERE created_at >= '2026-01-01'
  AND created_at <  '2026-02-01';

Indeks Juga Membantu Pengurutan

Satu hal yang sering terlewat: karena indeks sudah terurut, mesin basis data dapat mengembalikan baris dalam urutan indeks dan melewati langkah pengurutan terpisah. Hal ini penting untuk ORDER BY, terutama untuk paginasi N teratas.

Jika Anda mengurutkan berdasarkan kolom yang memiliki indeks yang sesuai, pengoptimal dapat membaca indeks sesuai urutan dan berhenti lebih awal setelah memperoleh jumlah baris yang cukup.

-- Index on created_at lets this avoid a sort and stop after 10 rows
SELECT order_id, total
FROM orders
ORDER BY created_at DESC
LIMIT 10;

Biaya Tersembunyi: Pengambilan dari Tabel

Indeks pohon-B biasa hanya menyimpan kolom yang diindeks serta penunjuk baris. Jadi, setelah menemukan entri yang cocok, mesin basis data masih harus menuju tabel (penyimpanan data) untuk membaca kolom lain yang Anda pilih.

Lompatan kedua itu adalah pengambilan dari tabel. Biayanya kecil untuk beberapa baris, tetapi besar ketika kueri cocok dengan banyak baris. Inilah salah satu alasan indeks dengan selektivitas rendah terkadang diabaikan. (Nanti Anda akan melihat bagaimana indeks yang mencakup semua kolom mengatasi hal ini.)

Memastikan Indeks Digunakan

Jangan pernah menyatakan bahwa indeks digunakan tanpa membuktikannya dengan EXPLAIN. Dalam wawancara, menguraikan rencana menunjukkan pemahaman yang nyata.

  • Seq Scan berarti indeks NOT digunakan.
  • Index Scan atau Index Seek berarti indeks digunakan.

Jika Anda menambahkan indeks tetapi masih melihat pemindaian berurutan, perencana menilai pemindaian tersebut lebih murah, biasanya karena kueri cocok dengan bagian tabel yang terlalu besar.

EXPLAIN
SELECT * FROM users WHERE email = 'ada@example.com';
-- Look for: Index Scan using idx_users_email

Kunci Utama Sudah Diindeks

Jebakan umum dalam wawancara: mendeklarasikan batasan PRIMARY KEY atau UNIQUE secara otomatis membuat indeks pohon-B pendukung. Anda tidak perlu, dan sebaiknya tidak, menambahkan indeks kedua pada kolom yang sama.

Itulah sebabnya penggabungan dan pencarian berdasarkan kunci utama sudah cepat, serta mengapa pertanyaan 'haruskah saya mengindeks kolom ID?' biasanya merupakan jebakan: semuanya sudah dilakukan untuk Anda.

-- This already builds a unique B-Tree index on (id)
CREATE TABLE users (
  id    BIGINT PRIMARY KEY,
  email TEXT UNIQUE
);

Cara Mengatakannya dalam Wawancara

Satukan semuanya dengan satu kalimat sederhana yang mudah disetujui oleh pewawancara:

'Indeks pohon-B adalah struktur terurut dan seimbang yang memungkinkan mesin basis data menemukan baris dengan sekitar log(N) pembacaan halaman, bukan dengan memindai seluruh tabel. Indeks ini mempercepat operasi kesetaraan, rentang, awalan, dan ORDER BY pada kolom yang diindeks, tetapi setiap kecocokan tetap memerlukan pengambilan dari tabel untuk kolom yang tidak diindeks.'

Kemudian dukung pernyataan itu dengan EXPLAIN. Kombinasi model dan bukti inilah yang menghasilkan nilai.

Pemeriksaan Singkat

Uji model mental Anda tentang hal-hal yang dipercepat oleh indeks pohon-B.

Rangkuman: Indeks Pohon-B

Poin penting untuk dibawa ke pelajaran berikutnya:

  • Pohon-B menyimpan nilai yang diindeks dalam keadaan terurut di pohon yang seimbang, sehingga pencarian memerlukan log(N) langkah.
  • Indeks ini mempercepat kesetaraan, rentang, awalan (LIKE dengan awalan), ORDER BY, dan MIN/MAX.
  • Setiap kecocokan tetap memerlukan pengambilan dari tabel untuk kolom yang tidak terdapat dalam indeks.
  • Membungkus kolom dalam fungsi atau menggunakan karakter pengganti di awal menonaktifkan indeks.
  • Selalu verifikasi dengan EXPLAIN; batasan PRIMARY KEY dan UNIQUE membuat indeks secara otomatis.

Berikutnya: cara mengurutkan kolom ketika satu indeks mencakup beberapa kolom sekaligus.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Indeks B-Tree dan Manfaatnya” gratis?

Ya — teks lengkap “Indeks B-Tree dan Manfaatnya” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Interview Prep, upgrade ke CoddyKit PRO. Kursus SQL Interview Prep mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Indeks B-Tree dan Manfaatnya”?

Apa yang sebenarnya disimpan oleh indeks dan operasi yang dipercepatnya. Kamu berlatih SQL Interview Prep 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 Interview Prep?

Tidak diperlukan pengalaman sebelumnya. SQL Interview Prep 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 1 dari 4.

Berapa lama pelajaran “Indeks B-Tree dan Manfaatnya” 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 Interview Prep ini?

Ya. Setiap pelajaran SQL Interview Prep 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

  1. Indeks B-Tree dan Manfaatnya
  2. Urutan Kolom pada Indeks Komposit
  3. Indeks yang Mencakup dan Pemindaian Hanya Indeks
  4. Saat Indeks Merugikan: Penulisan dan Selektivitas
← Kembali ke SQL Interview Prep