Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm cách nào chúng ta có thể tạo các chỉ mục DUY NHẤT nhiều cột?

Để tạo chỉ mục UNIQUE nhiều cột, chúng ta cần chỉ định tên chỉ mục trên nhiều cột. Ví dụ sau sẽ tạo một chỉ mục nhiều cột có tên là ‘id_fname_lname’ trên các cột ‘empid’, ’first_name’, ’last_name’ của bảng ‘nhân viên’ -

mysql> Create UNIQUE INDEX id_fname_lname on employee(empid,first_name,last_name);
Query OK, 0 rows affected (0.41 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> describe employee;
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| empid | int(11) | YES | MUL | NULL | |
| first_name | varchar(20) | YES | | NULL | |
| last_name | varchar(20) | YES | | NULL | |
+------------+-------------+------+-----+---------+-------+
3 rows in set (0.12 sec)

Từ tập kết quả của truy vấn trên, chúng ta có thể thấy rằng một chỉ mục nhiều được xác định trên bảng. Quên chi tiết về các chỉ mục, chúng ta có thể chạy truy vấn sau -

mysql> Show index from employee\G
*************************** 1. row ***************************
Table: employee
Non_unique: 0
Key_name: id_fname_lname
Seq_in_index: 1
Column_name: empid
Collation: A
Cardinality: 0
Sub_part: NULL
Packed: NULL
Null: YES
Index_type: BTREE
Comment:
Index_comment:
*************************** 2. row ***************************
Table: employee
Non_unique: 0
Key_name: id_fname_lname
Seq_in_index: 2
Column_name: first_name
Collation: A
Cardinality: 0
Sub_part: NULL
Packed: NULL
Null: YES
Index_type: BTREE
Comment:
Index_comment:
*************************** 3. row ***************************
Table: employee
Non_unique: 0
Key_name: id_fname_lname
Seq_in_index: 3
Column_name: last_name
Collation: A
Cardinality: 0
Sub_part: NULL
Packed: NULL
Null: YES
Index_type: BTREE
Comment:
Index_comment:
3 rows in set (0.00 sec)

Từ tập kết quả trên, chúng ta có thể quan sát thấy rằng giá trị trong ‘key_name’ được gửi là giống nhau vì chúng ta đã tạo chỉ mục đa cột trên tất cả các cột của bảng.