Bitmap Join Index


Dalam peningkatan kinerja Oracle10g dibuat Materialized View untuk menyimpan baris yang dihasilkan dari query. Manfaat dari mekanisme ini masih relevan, tapi subset tertentu dari query yang digunakan dalam data warehouse dapat mengambil manfaat dari penggunaan Bitmap Join Index.

Cara Kerja
Dalam Bitmap Index, setiap nilai yang berbeda untuk kolom tertentu dikaitkan dengan suatu bitmap dimana setiap bit mewakili baris pada tabel. Sebuah ‘1 ‘berarti bahwa baris yang berisi nilai, ‘0’ berarti tidak.
Bitmap Join Index memperluas konsep seperti ini bahwa indeks berisi data untuk mendukung join query, memperbolehkan query untuk mengambil data dari index daripada referensi join tabel. Setelah informasi dikompresi ke dalam bitmap, ukuran struktur yang dihasilkan secara signifikan lebih kecil dari Materialized View.

Pembuatan

Index ini dibuat dengan mengacu pada kolom dalam join table dengan yang akan digunakan untuk mendukung query. Pada contoh berikut ini index dibuat di tabel SALES join ke tabel CUSTOMERS: 
CREATE BITMAP INDEX CUST_SALES_BJI
ON SALES(CUSTOMERS.STATE)
FROM  SALES, CUSTOMERS
WHERE SALES.CUST_ID = CUSTOMERS.CUST_ID;

Karena kolom CUSTOMERS.STATE dirujuk dalam klausa ON dari index, query pada tabel SALES yang join ke tabel CUSTOMERS untuk mengambil kolom STATE dapat melakukannya tanpa referensi tabel CUSTOMERS. Sebaliknya data dibaca dari bitmap join indeks:
SELECT SUM(SALES.DOLLAR_AMOUNT)
FROM   SALES,CUSTOMER
WHERE  SALES.CUST_ID  = CUSTOMER.CUST_ID
AND    CUSTOMER.STATE = 'CALIFORNIA';

Ketika berhadapan dengan dataset besar, dapat mengurangi pemrosesan sangat besar. 

Pembatasan
Bitmap Gabung Indeks memiliki batasan sebagai berikut:

  • DML Paralel saat ini hanya didukung pada tabel fakta. DML paralel pada salah satu tabel dimensi yang berpartisipasi akan ditandai indeks sebagai unusable.
  • Hanya satu tabel dapat diperbarui bersamaan dengan transaksi yang berbeda bila menggunakan indeks bitmap join.
  • Tidak ada tabel yang muncul dua kali dalam join.
  • Tidak dapat membuat bitmap index join pada tabel IOT atau tabel TEMPORARY.
  • Kolom dalam indeks semua harus kolom dari tabel dimensi.
  • Join kolom tabel dimensi harus berupa kolom primary key atau memiliki sifat unique.
  • Jika tabel dimensi memiliki kunci primer komposit, setiap kolom pada kunci primer harus menjadi bagian dari join.

Semoga ini bisa membantu.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s