Chỉ số duy nhất của Oracle

Chi So Duy Nhat Cua Oracle



Hiệu suất cơ sở dữ liệu là một trong những vai trò thiết yếu của nhà phát triển cơ sở dữ liệu. Việc đảm bảo rằng cơ sở dữ liệu của bạn đang chạy với hiệu suất tối ưu có thể tác động đáng kể đến việc ứng dụng đọc hoặc ghi vào cơ sở dữ liệu đó.

Mặc dù tồn tại nhiều cách để cải thiện hiệu suất cơ sở dữ liệu, nhưng có một tính năng gần như phổ biến đối với bất kỳ cơ sở dữ liệu nào. Chỉ mục cơ sở dữ liệu là cấu trúc dữ liệu hoặc đối tượng được sử dụng để nâng cao tốc độ truy xuất dữ liệu từ bảng.

Khi được sử dụng đúng cách, các chỉ mục cơ sở dữ liệu có thể giảm gần một nửa tốc độ truy vấn, tùy thuộc vào dữ liệu đích, bố cục, tài nguyên có sẵn, v.v.







Trong hướng dẫn này, bạn sẽ học cách làm việc với các chỉ mục duy nhất trong cơ sở dữ liệu Oracle để ngăn chặn sự sẵn có của các giá trị trùng lặp trong một cột được lập chỉ mục.



Chỉ số duy nhất của Oracle

Chúng tôi có thể sử dụng một chỉ mục duy nhất để đảm bảo rằng không có hàng trùng lặp nào được lưu trữ trong một cột nhất định. Nếu cột của một chỉ mục nhất định chứa một quy tắc duy nhất, việc cố gắng thêm hai hàng có giá trị tương tự vào cột đó sẽ dẫn đến lỗi cho biết vi phạm ràng buộc duy nhất.



Trong Oracle, chúng ta có thể tạo một chỉ mục duy nhất bằng cách sử dụng câu lệnh CREATE UNIQUE INDEX như sau:





TẠO INDEX DUY NHẤT index_name TRÊN tên_bảng ( cột ) ;

Các cột được bao gồm trong chỉ mục sẽ không chấp nhận bất kỳ hàng trùng lặp nào.

Ví dụ về minh họa bảng độc đáo

Để minh họa cách tạo và sử dụng một chỉ mục duy nhất, hãy xem bảng sau:



LỰA CHỌN * TỪ dữ liệu mẫu;

đầu ra :

Tạo một Chỉ mục Duy nhất trên Cột First_Name

Câu lệnh ví dụ sau đây cho thấy cách tạo một chỉ mục duy nhất bằng cách sử dụng cột first_name:

tạo chỉ mục duy nhất first_name_unique trên sample_data ( họ ) ;

Bằng cách bật chỉ mục này, chúng tôi không thể chèn nhiều hơn một hàng có cùng tên.

Lấy ví dụ câu lệnh chèn sau:

chèn vào sample_data ( Tôi , first_name, ip_address, btc_address, credit_card, mã định danh )
giá trị ( mười một , 'bức tường' , '169.158.70.77' , '1CNz5d1d5SC8SaR6dFSVihwztqYx5Fg77q' , '4017955174552' ,
'26811d77-0a3a-4397-bc33-f7835f7c7ab9' ) ;

Nếu chúng ta chạy câu lệnh chèn đã cho, chúng ta sẽ gặp lỗi như sau:

[ 23000 ] [ 1 ] ORA-00001: ràng buộc duy nhất ( HR.FIRST_NAME_UNIQUE ) vi phạm

Như chúng ta có thể thấy, việc chèn giá trị đã cho vi phạm ràng buộc duy nhất cho cột first_name.

Tạo một chỉ mục duy nhất với hai cột

Chúng tôi cũng có thể có một chỉ mục duy nhất bao gồm nhiều hơn một cột. Trong ví dụ sau, chúng tôi tạo một chỉ mục duy nhất bằng cách sử dụng các cột first_name và io_address:

tạo chỉ mục duy nhất verify_columns trên sample_data ( first_name, ip_address ) ;

Tương tự, việc thêm các giá trị trùng lặp cho cột first_name hoặc ip_address sẽ dẫn đến lỗi vi phạm chỉ mục duy nhất.

Chỉ mục duy nhất tự động

Bạn đã bao giờ tự hỏi điều gì sẽ xảy ra khi bạn khai báo một cột trong bảng với khóa chính hoặc ràng buộc duy nhất chưa?

Nói một cách đơn giản, nếu bạn đặt một cột làm khóa chính của bảng hoặc gán một ràng buộc duy nhất cho một cột nhất định, công cụ cơ sở dữ liệu sẽ tự động tạo một chỉ mục duy nhất cho cột đó.

Điều này đảm bảo rằng không có giá trị trùng lặp nào được chèn vào cột đó.

Lấy ví dụ về tuyên bố sau:

tạo bảng sample_data
(
Tôi con số,
first_name  varchar2 ( năm mươi ) ,
ip_address  varchar2 ( hai mươi ) ,
btc_address varchar2 ( năm mươi ) ,
thẻ tín dụng varchar2 ( năm mươi ) ,
số nhận dạng  varchar2 ( 40 ) ,
ràng buộc khóa chính sample_pk ( Tôi )
) ;

Trong ví dụ trước, chúng ta tạo một bảng và đặt cột id làm khóa chính của bảng. Sau đó, để xem ràng buộc duy nhất được liên kết với cột đó (được tạo tự động), chúng ta có thể chạy lệnh sau:

lựa chọn index_name, index_type, khả năng hiển thị, trạng thái, TABLE_NAME
từ all_indexes nơi TABLE_NAME = 'DỮ LIỆU MẪU' ;

Kết quả :
Trong trường hợp này, chúng ta có thể thấy chỉ mục duy nhất được tạo bởi công cụ cơ sở dữ liệu cho cột id.

Phần kết luận

Trong hướng dẫn này, bạn đã học cách tạo và sử dụng các chỉ mục duy nhất trong cơ sở dữ liệu Oracle. Bạn cũng đã biết điều gì sẽ xảy ra khi bạn gán một khóa chính hoặc ràng buộc duy nhất cho một cột trong bảng.