Pernah nggak sih kalian punya pengalaman melihat isi tabel tapi lama banget. Sudah optimasi query tapi waktunya nggak berkurang signifikan. Biasanya ini terjadi kalau data kalian udah banyak, misalnya data kalian udah diatas 10 ribu baris yang punya relasi dibeberapa tabel. Apalagi kalau relasinya bukan dari ID tabelnya. Sudah saatnya kalian butuh yang namanya indexing.
![]() |
Gambar dari google.com |
Apa Itu Indexing?
Jika teman-teman pernah menggunakan kamus bahasa indonesia-inggris atau bahasa yang lain, tentu bisa dengan mudah dong untuk mencari arti kata dalam bahasa lain yang kita ingin ketahui artinya. Nah, indexing bisa diartikan penanda. Jika dalam database, dapat mengoptimalkan proses pencarian suatu data dengan kolom yang sudah diberikan index.
Jika teman-teman punya waktu senggang, bisa kunjungi artikel tentang Database Optimization #1 : Indexing karena disitu penjelasan lebih mendetail serta ada perbandingan waktunya jika menggunakan atau tidak menggunakan indexing.
Type Index di SQLyog
Kenapa di SQLyog? Karena aku lebih banyak menggunakan program ini dan pada program tersebut ada pilihan membuat indexing menggunakan GUI-nya jadi tinggal klik. Nah ada beberapa banyak type index di software tersebut. Ada 4 type index yang bisa dibuat tanpa perlu query yaitu:
- Primary: Secara default digunakan pada kolom Id atau kolom yang nilainya tidak akan sama dengan nilai dari data lainnya.
- Key: Efektif digunakan bila tabel tersebut digabungkan atau join dengan tabel lain. Contohnya aku punya tabel transaksi header dan detail. Namun ketika di-join-kan tidak menggunakan id masing-masing tabel. Melainkan menggunakan No Nota. Oleh karena itu perlu dibuat index dengan type Key pada kedua tabel tersebut agar mempercepat proses join.
- Fulltext: Berbeda dari yang lain, tipe fulltext digunakan untuk metode full text search. Aku sendiri juga belum pernah menggunakan indexing tipe ini.
- Unique: Setelah aku coba type index ini, aku mengetahui bahwa type unique bisa digunakan untuk tabel user yang memiliki kolom email karena alasannya email tidak akan memiliki kesamaan dengan email dari user lain. Oleh karena itu bisa menggunakan type unique.
Kekurangan Menggunakan Indexing
Walaupun banyak manfaat yang diberikan, indexing juga memiliki kekurangan. Kekurangan yang utama yaitu proses modifikasi data (insert, update, delete) akan lebih lama karena ada index yang perlu diperhatikan. Karena ketika proses tersebut, database juga akan memperbarui indexing. Alhasil, lama prosesnya mungkin akan 2-3 kali lipat.
Kekurangan yang kedua yaitu penyimpanan yang dibutuhkan akan lebih besar dikarenakan database juga perlu menyimpan data indexing. Oleh karena itu, bijak dalam menambahkan indexing agar database yang ingin kita optimasi tidak terjadi sebaliknya.