Indeks
adalah sesuatu yang berkaitan erat dengan implementasi, bukan modeling. Kita
seringkali perlu menambahkan indeks pada sebuah field atau banyak field
dikarenakan jika tidak ditambahkan maka performance database tidak menjadi
praktis. Serba-serbi indexing juga mungkin terlalu panjang untuk bisa
dijelaskan dalam artikel pendek ini, tapi intinya setiap kolom yang: 1)
memiliki rentang nilai cukup banyak; 2) terletak pada tabel yang berisi banyak
record; 3) seringkali disebutkan di klausa WHERE
dan/atau ORDER BY dan/atau GROUP BY; perlu diberi indeks. Ini
dikarenakan indeks membantu mencari
secara cepat sebuah nilai dari banyak nilai yang ada. Beberapa contoh:
*
Setiap primary key umumnya otomatis diberi indeks oleh database server,
meskipun tabelnya masih berisi sedikit record atau bahkan kosong. Ini
dikarenakan database perlu selalu mengecek keberadaan sebuah nilai field ini
manakala ada sebuah record yang ditambahkan (ingat, PK artinya tak boleh ada dua
record yang mengandung nilai field ini yang sama). Tanpa indexing, pengecekan
akan linear dan memakan waktu lama.
*
Field tanggal lahir dalam tabel customers kemungkinan besar harus diindeks.
Bahkan dayofyear() field ini
juga mungkin perlu diindeks. Mengapa? Karena: 1) rentang nilai cukup besar (365
hari dalam setahun x +- 60 jumlah tahun); 2) tabel customers potensial
ukurannya besar; 3) sering disebutkan di klausa WHERE (misalnya mencari customer yang ultah hari ini).
*
Field memo/notes kemungkinan besar tidak perlu diindeks (secara biasa).
Mengapa? Karena meskipun 1) rentang nilai cukup besar; dan 2) tabel customers
bisa besar; tapi 3) field ini tidak pernah disebutkan di klausa WHERE secara langsung (mis: Anda tidak
pernah menyebutkan: … WHERE notes='nilai
catatan tertentu' atau WHERE
notes > 'nilai tertentu'). [Catatan: ada indeks lain yang “tidak
biasa” di MySQL, yaitu FULLTEXT. Tapi ini di luar cakupan artikel kita kali
ini.]
*
Field jenis kelamin mungkin tidak perlu diindeks, kecuali jika perbandingan
pria:wanita amat drastis bedanya. Mengapa? Sebab: 1) rentang nilai yang ada
hanyalah dua: L (lelaki) dan P (perempuan). Meskipun Anda beri indeks, tidak
akan memperbaiki kinerja.
0 komentar:
Posting Komentar