
Bayangin Disuruh Nyari Nama di Buku Telepon Acak...
Bayangin Budi disuruh mencari nomor telepon "Zoro" di sebuah buku telepon raksasa yang halamannya setebal 1 Juta halaman. Masalahnya, buku telepon ini halamannya dicetak acak (tidak urut abjad)!
Satu-satunya cara agar Budi menemukan Zoro adalah dengan membuka buku itu dari halaman 1, mengecek satu per satu barisnya, sampai ke halaman sejuta. Dalam dunia Database SQL, proses memeras keringat ini disebut Full Table Scan. Jika database-mu dibiarkan tanpa aturan, Query SELECT akan melakuan cara bodoh ini dan membuat servermu sangat lambat!
Masalahnya: Data Fisik Itu Berantakan
Setiap kali kamu melakukan INSERT pengguna baru, PostgreSQL atau MySQL hanya membuang data tersebut ke bagian paling bawah Hard Disk (tumpukan terbawah) tanpa peduli abjadnya. Hard disk itu lambat jika disuruh membaca miliaran tumpukan dari awal sampai akhir.
Nah, Di Sinilah 'B-Tree Indexing' Masuk!
Agar pencariannya instan, Backend Developer akan membuat perintah: CREATE INDEX idx_name ON users(nama).
Perintah sakti ini menyuruh *database* untuk membuat Buku Catatan Kecil (Index) di memori secara terpisah. Buku catatan ini dibangun menggunakan struktur data berbentuk pohon bercabang yang disebut B-Tree (Balanced Tree).
- Buku catatan ini ukurannya sangat kecil, dan isinya Diurutkan Sempurna Berdasarkan Abjad (A-Z) beserta *link* (Pointer) ke lokasi fisik baris aslinya di Hard Disk.
- Saat kamu mencari "Zoro", sistem tidak membaca sejuta data. Sistem menggunakan algoritma Binary Search di B-Tree: "Apakah Zoro ada di atas huruf M atau di bawah? Di Bawah. Apakah di atas T atau di bawah? Di Bawah."
- Dengan struktur pohon (Tree) yang melompat membelah dua ini, untuk mencari 1 nama dari 1 Juta baris data, database CUMA BUTUH 20 KALI LOMPATAN SAJA! (Logaritmik
O(log n)). Pencariannya selesai dalam 0.001 milidetik!
Intinya: Fitur Index adalah sihir kecepatan Database. TAPI peringatan: Jangan meng-Index semua kolom! Setiap kali kamu melakukan INSERT, database butuh waktu ekstra untuk menyusun ulang pohon buku catatannya. Terlalu banyak Index akan membuat proses Input Data/Save menjadi super lambat!
Mau langsung pakai template?
Jelajahi template gratis dan premium di TampilKit untuk mempercepat proses development project kamu.
Browse Templates