B-tree index là loại index phổ biến trong Oracle Database, nhất là các database OLTP, với mục đích tăng tốc độ truy vấn, hỗ trợ tạo constraint PK hay constraint unique, giảm tranh chấp trên column khóa ngoại.

Dựa trên nguyên lý cây cân bằng (balance tree), B-tree index bao gồm root, branch và các leaf node. Trong leaf node sẽ chứa dữ liệu column được index và ROWID tương ứng.

 

Tạo B-tree index

 

Để tạo index, ta nên quy hoạch tablespace lưu trữ riêng cho index, cũng như có các quy tắc đặt tên cho đồng bộ và dễ hiểu.

 

Cú pháp tạo B-tree index cũng khá đơn giản. Để tạo index trên column MANAGER_ID của table EMPLOYEES, ta có thể tạo đơn giản như sau

 

 

Hoặc chi tiết hơn 1 chút, với các options về thao tác khi tạo (LOGGING, NOLOGGING, PARALLEL, NOPARALLEL…), chỉ định tablespace lưu trữ, tạo online để tránh gây lock table…

 

 

Trước khi tạo index, ta query 1 giá trị xác định và Oracle phải full scan toàn bộ table để tìm ra dòng dữ liệu thỏa điều kiện

 

 

Sau khi tạo index, Oracle sử dụng index (INDEX RANGE SCAN) để tìm ra dòng dữ liệu thỏa điều kiện và truy cập đến dòng dữ liệu đó ngay (TABLE ACCESS BY INDEX ROWID)

 

 

Kiểm tra thông tin index

 

 

Để rebuild lại index

 

 

Để drop index

 

 

Ta cũng có thể tạo B-tree index trên nhiều column. Index này được gọi là composite index

 

 

Trong trường hợp muốn tạo B-tree index để ràng buộc các giá trị là duy nhất trong column, ta có thể tạo unique index

 

 

B-tree index còn 1 số biến thể khác, chúng ta sẽ tiếp tục tìm hiểu trong các phần tiếp theo laugh