Apa sih index dalam basis data? sebenernya sederhana saja, yaitu untuk meningkatkan kecepatan dalam meretrieve data. Ketika kita memiliki basis data yang tidak terlalu banyak record, mungkin penggunaan index pada basis data tidak akan terlalu terasa. Berbeda ketika record data yang ada dalam basis data kita sangat banyak. Bisa jadi waktu yang dibutuhkan untuk meretrieve data nantinya memiliki response time yang lama. Sebagai contoh, beberapa bulan kebelakang ini saya sedang melakukan analisa terhadap sebuah database yang cukup kompleks. Kebetulan jumlah record data yang ada bisa sampai ratusan ribu records. Ketika melakukan sebuah query yang meretrieve data dari lima buah table sekaligus, response time yang didapat dari hasil query tersebut bisa sampai 30 detik. Bayangkan..bagaimana bila user anda harus menunggu 30 detik? bisa-bisa mereka membanting layar PC atau laptopnya..haha lebay
Berangkat dari masalah di atas, akhirnya saya berimajinasi untuk melakukan index pada basis data. Lalu pertanyaannya adalah apakah dengan melakukan index permasalahan di atas bisa selesai? Melirik kepada definisi sederhana saya di atas, indexing ada untuk meningkatkan kecepatan dalam meretrieve data. Ya benar, meningkatkan kecepatan dalam meretrieve data. Analoginya seperti sebuah buku, bila kita mencari sebuah kata dalam buku pasti akan sulit atau melelahkan bila cara kita mencarinya adalah melihat halaman pada buku satu per satu. Tetapi akan berbeda bila kita mencari kata tersebut pada index sebuah buku. Kita akan lebih cepat menemukan kata tersebut dengan melihat halaman yang diberikan pada index. Konsep tersebut bisa kita samakan dengan istilah index pada basis data. Alhasil, setelah melakukan index pada basis data, response time pada query yang sama dengan sebelumnya berubah dari 30 detik menjadi 2 detik!! EUREKA!!
OK, kita akan bahas beberapa syntax SQL untuk melakukan index. here we go..
- Membuat Index
CREATE INDEX nama_indeks ON nama_tabel(nama_atribut) ;
- Membuat Index dengan Banyak Atribut
CREATE INDEX nama_indeks ON nama_tabel(nama_atribut, nama_atribut) ;
- Menghapus Index
DROP INDEX nama_indeks ON nama_tabel ;
Referensi:
http://laluirfan.web.ugm.ac.id/?p=249
http://www.interspire.com/content/2006/02/15/introduction-to-database-indexes/