Oracle tạo chỉ mục

Oracle Tao Chi Muc



Trong cơ sở dữ liệu Oracle, một chỉ mục đề cập đến cấu trúc dữ liệu giúp tăng tốc độ của các hoạt động truy xuất dữ liệu trên bảng cơ sở dữ liệu. Tuy nhiên, điều này có thể dẫn đến hậu quả là các thao tác ghi bổ sung và không gian lưu trữ trên cơ sở dữ liệu của bạn.

Một ví dụ về nơi chỉ mục cơ sở dữ liệu sẽ hữu ích là trong hệ thống quản lý quan hệ khách hàng.







Trong một hệ thống như vậy, chúng ta có thể có một bảng cơ sở dữ liệu lưu trữ thông tin khách hàng. Điều này có thể bao gồm tên, địa chỉ, phương thức thanh toán, thông tin liên hệ, v.v.



Nếu bảng chứa nhiều bản ghi, có thể là hàng triệu bản ghi, thì có thể mất nhiều thời gian và nguồn lực để tìm kiếm thông tin khách hàng cụ thể từ cơ sở dữ liệu. Đây là một hiện tượng tiêu cực, đặc biệt là trong cơ sở dữ liệu mà hiệu suất là rất quan trọng.



Để đi vòng quanh điều này, chúng ta có thể sử dụng chỉ mục cơ sở dữ liệu.





Ví dụ: chúng ta có thể tạo một chỉ mục trên cột tên của khách hàng để cho phép hệ thống cơ sở dữ liệu nhanh chóng tìm và truy xuất thông tin của một khách hàng cụ thể bằng cách sử dụng tên đó. Do đó, thay vì cơ sở dữ liệu đi qua tất cả các hàng và cột trong bảng, nó chỉ sử dụng chỉ mục để tra cứu thông tin khách hàng.

Trong hướng dẫn này, bạn sẽ học cách sử dụng lệnh CREATE INDEX trong cơ sở dữ liệu Oracle để khởi tạo một chỉ mục mới.



Oracle Tạo Tuyên bố Chỉ mục

Sau đây là cú pháp của câu lệnh CREATE INDEX trong cơ sở dữ liệu Oracle:

TẠO INDEX index_name
ON tên_bảng (cột1, cột2, ...);

Cú pháp trên tạo một chỉ mục có tên index_name trên bảng với tên table_name sử dụng các cột được chỉ định (cột1, cột2, v.v.) làm khóa cho chỉ mục.

Trong Oracle, khóa chính là một cột hoặc một tập hợp các cột xác định duy nhất mỗi hàng trong một bảng. Theo mặc định, Oracle sẽ tự động tạo một chỉ mục duy nhất trên các cột khóa chính của bảng để thực thi ràng buộc về tính duy nhất và cải thiện hiệu suất của việc tra cứu khóa chính.

Tuy nhiên, trong một số trường hợp, bạn có thể cần tạo một chỉ mục mới cho một bảng cụ thể theo cách thủ công.

Chúng ta hãy xem xét một số ví dụ về cách chúng ta có thể thực hiện điều này.

Ví dụ tạo chỉ mục của Oracle

Giả sử chúng ta có một bảng chứa thông tin nhân viên như trong kết quả bên dưới:

chọn first_name, last_name, mức lương, ngày_thuê từ NHÂN VIÊN;

Oracle Tạo chỉ mục cho một cột

Giả sử chúng ta muốn tạo một chỉ mục bằng cách sử dụng cột first_name. Chúng tôi có thể chạy một truy vấn như được hiển thị:

tạo chỉ mục first_name_lookup trên EMPLOYEES(FIRST_NAME);

Câu lệnh CREATE INDEX này tạo một chỉ mục có tên first_name_lookup trên bảng EMPLOYEES, sử dụng cột FIRST_NAME làm khóa cho chỉ mục. Chỉ mục này có thể được sử dụng để cải thiện hiệu suất của các truy vấn tìm kiếm nhân viên theo tên của họ.

Khi chúng tôi đã tạo chỉ mục, chúng tôi có thể sử dụng nó để tìm kiếm một nhân viên cụ thể như được hiển thị:

CHỌN first_name, last_name, lương, thuê_ngày
TỪ nhân viên
WHERE first_name = 'William';

Kết quả:

Nếu không có chỉ mục first_name_lookup, hệ thống cơ sở dữ liệu sẽ phải quét toàn bộ bảng EMPLOYEES để tìm tất cả các hàng trong đó cột FIRST_NAME bằng 'William'. Tuy nhiên, khi có chỉ mục, hệ thống cơ sở dữ liệu có thể nhanh chóng tra cứu các hàng trong bảng lập chỉ mục bằng cách sử dụng giá trị 'John' làm khóa và sau đó truy xuất các hàng được yêu cầu từ bảng, thao tác này sẽ nhanh hơn nhiều.

Bạn có thể xem các bước được sử dụng khi thực hiện truy vấn bằng cách sử dụng lệnh giải thích kế hoạch như được hiển thị:

giải thích kế hoạch cho CHỌN first_name, last_name, lương, ngày thuê
TỪ nhân viên
WHERE first_name = 'William';

Kế hoạch truy vấn kết quả:

Ví dụ 2 – Oracle Tạo chỉ mục với nhiều cột

Tương tự, chúng ta có thể tạo một chỉ mục bao gồm nhiều cột trong một bảng nhất định. Ví dụ: giả sử chúng ta muốn tạo một chỉ mục bao gồm cột first_name và last_name.

Chúng ta có thể sử dụng mã như được hiển thị:

tạo chỉ mục multi_lookup trên EMPLOYEES(FIRST_NAME, LAST_NAME);

Câu lệnh CREATE INDEX này tạo một chỉ mục có tên multi_lookup trên bảng EMPLOYEES, sử dụng các cột FIRST_NAME và LAST_NAME làm khóa cho chỉ mục.

Sau khi được tạo, chúng ta có thể sử dụng chỉ mục này như được hiển thị trong truy vấn mẫu như được hiển thị:

CHỌN first_name, last_name, lương, thuê_ngày
TỪ nhân viên
WHERE first_name = 'William' AND last_name = 'Smith';

Giá trị kết quả:

Và ở đó, bạn có một phương pháp tăng tốc các truy vấn cơ sở dữ liệu của mình bằng cách sử dụng các chỉ mục để giới hạn phạm vi tìm kiếm.

Phần kết luận

Câu lệnh CREATE INDEX trong Oracle cho phép chúng ta tạo một chỉ mục trên một bảng để cải thiện hiệu suất của các hoạt động truy xuất dữ liệu. Tuy nhiên, mặc dù các chỉ mục có thể cải thiện hiệu suất truy vấn, nhưng chúng cũng phải chịu các hình phạt về dung lượng lưu trữ, dẫn đến giảm tốc độ ghi hoạt động, chỉ sử dụng chúng khi cần thiết.