Senin, 08 April 2013

Index

Artikel -13
 
Index adalah sebuah objek sistem database yang dapat mempercepat proses pencarian (query) data. Penggunaan index pada database merupakan salah satu teknik pembuatan database yang baik. Hal ini terutama sangat berguna pada implementasi database dengan skala VLDB (Very Large Database) atau OLDB (Online Large Database).
Saat database dibuat tanpa menggunakan index, maka kinerja server database dapat menurun secara drastis. Hal ini dikarenakan resource komputer banyak digunakan untuk pencarian data atau pengaksesan query SQL dengan metode table-scan. Index pada kolom-kolom tabel database mempunyai fungsi seperti indeks kamus atau buku. Hal ini membuat pencarian data akan lebih cepat dan tidak banyak menghabiskan resource komputer.
Index merupakan struktur data tersendiri yang tidak bergantung kepada struktur tabel. Setiap index terdiri dari nilai kolom dan penunjuk (atau ROWID) ke baris yang berisi nilai tersebut. Penunjuk tersebut secara langsung menunjuk ke baris yang tepat pada tabel, sehingga menghindari terjadinya full table-scan. Akan tetapi lebih banyak index pada tabel tidak berarti akan mempercepat query. Semakin banyak index pada suatu tabel menyebabkan kelambatan pemrosesan perintah-perintah DML (Data Manipulation Language), karena setiap terjadi perubahan data maka index juga harus disesuaikan.
Berikut ini adalah beberapa alasan kenapa index diperlukan:
  1. Kolom sering digunakan dalam klausa WHERE atau dalam kondisi join
  2. Kolom berisi nilai dengan jangkauan yang luas
  3. Kolom berisi banyak nilai null
  4. Beberapa kolom sering digunakan dalam klausa WHERE atau dalam kondisi join
  5. Tabel berukuran besar dan sebagian besar query menampilkan data kurang dari 2-4%.
Perlu kita perhatikan bahwa terdapat beberapa kondisi dimana tidak diperlukan kehadiran index, yaitu ketika:
  1. Table kecil
  2. Kolom tidak sering digunakan sebagai kondisi dalam query
  3. Kebanyakan query menampilkan data lebih dari 2-4% dari seluruh data
  4. Table sering di-update
Database oracle mampu mendukung beberapa tipe index yaitu:
1.  B*-Tree
Suatu B*-tree adalah tipe standar dari index yang tersedia pada Oracle, dan itu sangat berguna pada saat memilih row yang sesuai dengan kriteria tertentu. Index jenis ini bisa dibuat dengan perintah CREATE INDEX. 
Contoh: CREATE INDEX nama_pegawai_idx ON pegawai(nama);
2.  Bitmap index
Index yang biasa digunakan untuk kolom yang memiliki sedikit nilai yang unik, seperti jenis kelamin, agama, atau status perkawinan.
Contoh: CREATE BITMAP INDEX jenis_kelamin_idx ON biodata (jenis_kelamin);
3.  Function-based indexes
Selain melakukan index terhadap kolom, seperti kolom Nama misalnya, maka Anda juga dapat meng-index suatu kolom yang berbasis fungsi. Function-based index akan memberikan kesempatan bagi Oracle optimizer beberapa pilihan ketika memilih execution path.
Contoh: CREATE INDEX total_gaji_idx ON penggajian (gaji_pokok + bonus);
4.  Revers Key Index
Index yang digunakan untuk data yang sangat beragam(unik) atau increment.
Contoh: CREATE INDEX nomor_ktp_idx ON biodata (nomor_ktp) REVERSE;
5.  Partitioned indexes
Anda dapat menggunakan partition index untuk mendukung partitioned tables atau untuk menyederhanakan index management. Index partition dapat bersifat lokal bagi partisi tabel atau dapat pula bersifat global yang berpengaruh pada seluruh tabel.
6.  Text indexes
Anda dapat meng-index nilai text untuk mendukung peningkatan pada kemampuan pencarian, seperti pencarian frase dan lain sebagainya. Text indexes merupakan himpunan dari tabel dan index yang dipelihara oleh Oracle untuk mendukung pencarian teks yang sangat kompleks. Oracle Database 10g menawarkan peningkatan pada text indexes yang mana menyederhanakan proses administrasi dan pemeliharaannya.
Menghapus index
Index tidak dapat dimodifikasi. Kita harus menghapusnya terlebih dahulu dan menciptakannya kembali. Kita dapat menghapus definisi index dari data dictionary dengan perintah DROP INDEX.

 http://ali.misri07.alumni.ipb.ac.id/index/

Tidak ada komentar:

Posting Komentar