Lompat ke konten utama

Kompetisi Ajak Teman: hadiah total Rp1.000.000 tunai untuk 3 pengajak terbanyak. Berakhir 29 November 2026. Ikut kompetisi

←

Desain Basis Data

Pelajaran 14 dari 20

Dari kebutuhan ke skema

Indeks: kapan dan di kolom mana

Setelah pelajaran ini kamu bisa menjelaskan cara kerja indeks, menentukan kolom yang perlu indeks, dan menyebut biayanya.

±14 menitDiperiksa 28 Sep 2026

Materi

Tanpa indeks, mencari satu baris berarti membaca seluruh tabel satu per satu. Dokumentasi SQLite menyebutnya pemindaian penuh (full table scan): wajar untuk tujuh baris, tetapi pada tujuh juta baris bisa membaca berkas berukuran megabita demi satu angka. Tabel SQLite tersimpan urut menurut rowid, sehingga pencarian menurut rowid memakai pencarian biner yang waktunya sebanding log N, bukan N. Indeks memberi keuntungan yang sama untuk kolom lain: salinan kolom itu yang terurut, bersama rowid barisnya.

PostgreSQL membandingkan indeks dengan indeks di belakang buku: istilah yang sering dicari dikumpulkan secara alfabetis supaya pembaca tidak perlu membaca seluruh buku. Biayanya juga dicatat di dokumentasi yang sama: setelah dibuat, indeks harus terus diselaraskan dengan tabel, sehingga menambah beban pada setiap INSERT, UPDATE, dan DELETE; indeks yang jarang atau tidak pernah dipakai kueri karena itu dihapus.

CREATE INDEX idx_peminjaman_buku ON peminjaman(buku_id);
CREATE UNIQUE INDEX idx_buku_isbn ON buku(isbn);  -- menolak ISBN ganda

Kandidat pertama untuk indeks adalah kolom kunci asing di tabel anak. Dokumentasi kunci asing SQLite menjelaskan alasannya: setiap kali baris induk dihapus, SQLite menjalankan pencarian SELECT rowid FROM tabel_anak WHERE kunci_anak = ? untuk menemukan anaknya. Indeks tidak wajib di kolom itu, tetapi hampir selalu bermanfaat. Kunci primer induk sudah punya indeks, karena PostgreSQL dan SQLite mewajibkan kolom yang dirujuk bersifat unik. Indeks UNIQUE sekaligus menjadi batasan: SQLite menolak nilai ganda, tetapi menganggap setiap NULL berbeda satu sama lain.

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Latihan 2 dari 3

Sebuah tabel berisi 1.048.576 baris yang tersimpan urut menurut rowid. Pencarian biner butuh waktu sebanding log₂N. Berapa log₂ dari 1.048.576?

Latihan 3 dari 3

Dokumentasi kunci asing SQLite menyatakan indeks tidak wajib, tetapi hampir selalu bermanfaat, pada satu jenis kolom. Di skema lembaga kursus, kolom mana itu?

Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke