0% menganggap dokumen ini bermanfaat (0 suara)
153 tayangan4 halaman

Modul 8 Implementasikan Index Pada Database

Implementasi index pada database bertujuan untuk mempercepat proses pencarian data dengan menyimpan petunjuk ke baris tabel yang sesuai dengan nilai kolom tertentu, sehingga menghindari pencarian ke seluruh baris tabel. Beberapa tipe index yang didukung oleh database Oracle antara lain B-tree, bitmap, function-based, dan text index.
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
153 tayangan4 halaman

Modul 8 Implementasikan Index Pada Database

Implementasi index pada database bertujuan untuk mempercepat proses pencarian data dengan menyimpan petunjuk ke baris tabel yang sesuai dengan nilai kolom tertentu, sehingga menghindari pencarian ke seluruh baris tabel. Beberapa tipe index yang didukung oleh database Oracle antara lain B-tree, bitmap, function-based, dan text index.
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 4

Implementasikan Index pada Database

Hal yang sering disebutkan untuk meningkatkan performa dari database adalah INDEX.

Bagi yang gemar membaca pasti sudah tidak asing lagi dengan index pada buku. Dengan index, kita
dapat dengan mudah menemukan suatu topik pada buku yang sedang kita baca. Tujuan adanya
indeks dalam database antara lain adalah untuk mempercepat pencarian data berdasarkan kolom
tertentu.

Index adalah sebuah objek dalam sistem database yang dapat mempercepat proses pencarian


(query) data. Saat database dibuat tanpa menggunakan index, maka kinerja server database dapat
menurun secara drastis. Hal ini dikarenakan resource CPU banyak digunakan untuk pencarian data
atau pengaksesan query SQL dengan metode table-scan. Index membuat pencarian data akan lebih
cepat dan tidak banyak menghabiskan resource CPU.

Index merupakan objek 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. 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

Mari kita coba buktikan performa database jika menggunakan index. Saya memiliki tabel
DATA_PASIEN yang tidak memiliki index dan dengan jumlah record sebanyak 15 juta, seperti terlihat
pada gambar:
Coba kita lakukan query pada tabel tersebut:

Bisa kita lihat bahwa untuk mengeksekusi query tersebut, diperlukan 18.332 detik. Kemudian saya
tambahkan index pada tabel tersebut:

Setelah ditambahkan index, mari kita eksekusi query yang sama untuk tabelnya:

Menakjubkan bukan? Dengan hanya menambahkan index, kecepatan query bisa memangkas waktu
eksekusi sampai 90%.

 
Database oracle mampu mendukung beberapa tipe index yaitu:

1. B-Tree

Suatu B-tree adalah tipe standar dari index yang tersedia pada Oracle, dan 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);

B-Tree Index memiliki sub-tipe sebagai berikut:

 Index-organized tables: Pada index-organized table, rows dimasukkan kedalam index yang di
definisikan pada primary key table.

 Reverse key indexes: Index yang digunakan untuk data yang sangat beragam(unik) atau
increment.
Contoh: CREATE INDEX nomor_ktp_idx ON biodata (nomor_ktp) REVERSE;

 Descending indexes: Index yang memasukan data ke dalam kolom tertentu dalam urutan
menurun.

 B-tree cluster indexes: Index ini digunakan untuk mengindeks table cluster key.

2.  Bitmap dan bitmap join index

Index yang biasa digunakan untuk kolom yang memiliki sedikit nilai yang unik, seperti jenis kelamin,
agama, atau status perkawinan. Index ini biasa digunakan untuk point ke multiple rows.  
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, misalkan fungsi UPPER. 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.  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.

5.  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.

Contoh: DROP INDEX employee_last_name_idx;

Anda mungkin juga menyukai