B-Tree atau singkatan dari balanced tree yaitu most commons type database index di Oracle dengan tujuan mengelompokan data berdasarkan range. Sebagai contoh misalnya kita punya index dari table departments pada column department_id ketika di buat index maka secara logical akan dibuat pengelompokan seperti berikut:

oracle-btree-index

Branch Block & Leaf Block

Sebuah Balance Tree (B-Tree) index ada dua block yaitu branch block untuk searching dan leaf block untuk storing values. Jadi secara logic ketika ada perintah select maka pertama masuk dari branch block lalu menuju leaf block.

Dalam root branch pada gambar diatas, terlihat pengelompokan 0 .. 40, 41 .. 80 dan seterusnya sedangkan dibawahnya dipecah lagi, sedangkan leaf block terdiri dari deretan nilai yang dapat berpindah block satu sama lain berdasarkan kategorinya.

Index Scans

Index Scan, jika kita menggunakan SQL Statement hanya pada column yang di index maka database akan membaca nilainya melalui index secara automatis bukan dari table. Penggunaan index scan terdiri dari:

  1. Full index scan
  2. Fast Full index scan
  3. Index Range Scan
  4. Index Skip Scan

Menggunakan B-Tree Index

Untuk menggunakan balance tree indes,

Kemudian coba execute, dan commit. Setelah itu coba tampilkan total datanya seperti berikut:

SQL> select to_char(count(*), '999G999G999') data
from test_indexs;

DATA
------------
   1,070,000
SQL>

Sebagai contoh, kita sering melakukan query menggunakan atribute first_name maka kita perlu membuatkan index seperti berikut:

Selain itu juga kita bisa membuat composite index, sebagai contoh kita sering melakukan atribute department_id dan salary maka kita perlu buat index seperti berikut: