You are on page 1of 3

Index Oracle là gì:

Index là một cơ chế trong cơ sở dữ liệu Oracle giúp tăng tốc độ truy vấn dữ liệu.
Index được sử dụng để tìm kiếm nhanh hơn trong bảng dữ liệu bằng cách tạo một
danh sách được sắp xếp của các giá trị khác nhau trong một cột hoặc nhiều cột của
bảng.
Khi tạo index, Oracle sẽ tạo ra một cây b-tree (balanced tree) trong bộ nhớ đệm,
với mỗi nút của cây b-tree tương ứng với một giá trị trong cột được chỉ định. Mỗi
nút sẽ có các liên kết đến các nút khác, tạo ra một cấu trúc cây, giúp tìm kiếm dữ
liệu nhanh chóng hơn.
Khi truy vấn dữ liệu, Oracle sẽ sử dụng index để tìm kiếm nhanh chóng các hàng
trong bảng dữ liệu. Khi sử dụng index, Oracle sẽ chỉ định cho trình tìm kiếm để sử
dụng index thay vì quét toàn bộ bảng dữ liệu. Điều này giúp giảm thời gian truy
vấn và tăng hiệu suất truy vấn dữ liệu.
Tuy nhiên, việc sử dụng index cũng có thể ảnh hưởng đến hiệu suất thêm, sửa và
xóa dữ liệu. Khi thêm, sửa hoặc xóa dữ liệu, Oracle phải cập nhật index tương ứng
để đảm bảo tính toàn vẹn của dữ liệu, điều này có thể làm chậm các hoạt động
thêm, sửa và xóa dữ liệu.
Vì vậy, việc sử dụng index phải được cân nhắc cẩn thận để đảm bảo hiệu suất tối
ưu cho các hoạt động truy vấn và các hoạt động khác như thêm, sửa và xóa dữ liệu.

Trong Oracle, một index là một cơ chế để tăng tốc độ truy vấn dữ liệu trong cơ sở
dữ liệu bằng cách tạo ra một bản sao của một phần hoặc toàn bộ dữ liệu và sắp xếp
chúng theo một thứ tự nhất định.
CREATE INDEX emp_id ON employee(EMP_ID);
SELECT * FROM employee WHERE emp_id = 7566;

CREATE INDEX emp_job ON employee(job);


SELECT * FROM employee WHERE job = 'CLERK';
 Drop INDEX
DROP INDEX emp_job;

Lưu ý rằng nếu bạn cố gắng bỏ một không tồn tại, bạn sẽ nhận được lỗi sau:

SQL Error: ORA-01418: specified index does not exist

 UNIQUE
Oracle UNIQUE index là một loại index trong Oracle, được sử dụng để đảm bảo
tính duy nhất của các giá trị trong một cột hoặc tập hợp các cột. Khi tạo một
UNIQUE index trên một cột hoặc tập hợp các cột, Oracle sẽ đảm bảo rằng không
có hai giá trị nào trong cột hoặc tập hợp các cột đó có cùng giá trị.
Khi thêm hoặc cập nhật dữ liệu vào bảng có UNIQUE index, Oracle sẽ kiểm tra
xem giá trị được thêm hoặc cập nhật có trùng với bất kỳ giá trị nào trong UNIQUE
index hay không. Nếu giá trị đó đã tồn tại, Oracle sẽ từ chối thêm hoặc cập nhật và
trả về lỗi.
CREATE UNIQUE INDEX cust_email_idx ON Customer(MAIL);

 Oracle Function-based Index

Thường được sử dụng để thực hiện một hoặc nhiều tác vụ tính toán hoặc xử lý
dữ liệu phức tạp. Function trong Oracle có thể nhận đầu vào từ người dùng hoặc
trả về kết quả theo yêu cầu của người dùng, và có thể được sử dụng trong câu
lệnh SQL hoặc PL/SQL để thực hiện các tính toán phức tạp hoặc truy xuất dữ
liệu.

CREATE INDEX name ON emp(UPPER(emp_name));

Bitmap index là một loại chỉ số trong Oracle, nó sử dụng bitmap để lưu trữ và quản
lý thông tin chỉ mục. Bitmap index được sử dụng trong các trường hợp mà các cột
trong bảng có số lượng giá trị trùng lặp thấp, và các giá trị trong cột đó chỉ thuộc
một tập hợp giá trị nhỏ.
Bitmap index sử dụng một bitmap để lưu trữ thông tin chỉ mục. Mỗi bit trong
bitmap tương ứng với một giá trị trong tập hợp giá trị được lưu trữ trong cột của
bảng. Nếu một giá trị xuất hiện trong một bản ghi, bit tương ứng sẽ được đặt là 1,
và ngược lại, nếu giá trị không xuất hiện trong bản ghi, bit tương ứng sẽ là 0.
Bitmap index thường được sử dụng trong các truy vấn phân tích dữ liệu hoặc truy
vấn kết hợp nhiều điều kiện trong một truy vấn. Nó có thể giúp tăng tốc độ truy
vấn và giảm dung lượng lưu trữ index.

CREATE BITMAP INDEX GT_idx ON Customer(GT);

SELECT * FROM Customer WHERE GT IN ('Nu');

You might also like