Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

เกิดอะไรขึ้นถ้าเพิ่ม UNIQUE constraint บนคอลัมน์เดียวกันหลายครั้ง

เมื่อเพิ่ม UNIQUE constraint บนคอลัมน์เดียวกันหลายครั้ง MySQL จะสร้างดัชนี (index) บนคอลัมน์นั้นตามจำนวนครั้งที่เพิ่ม UNIQUE constraint

ตัวอย่าง

สมมติว่ามีตาราง 'employee' ที่มี UNIQUE constraint บนคอลัมน์ 'empid':

mysql> Describe employee;
+------------+-------------+------+-----+---------+-------+
| Field      | Type        | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| empid      | int(11)     | YES  | UNI | NULL    |       |
| first_name | varchar(20) | YES  |     | NULL    |       |
| last_name  | varchar(20) | YES  |     | NULL    |       |
+------------+-------------+------+-----+---------+-------+

รัน SHOW INDEX พบดัชนีเดียวบน 'empid':

mysql> Show index from employee\G;
*************************** 1. row ***************************
Table: employee
Non_unique: 0
Key_name: empid
Seq_in_index: 1
Column_name: empid
Collation: A
Cardinality: 0
Sub_part: NULL
Packed: NULL
Null: YES
Index_type: BTREE

เพิ่ม UNIQUE constraint อีกครั้งบน 'empid':

mysql> ALTER TABLE employee ADD UNIQUE(empid);
Query OK, 0 rows affected (0.21 sec)

SHOW Index อีกครั้ง พบดัชนี 2 ตัว: 'empid' และ 'empid_2':

mysql> Show index from employee\G;
*************************** 1. row ***************************
Key_name: empid
*************************** 2. row ***************************
Key_name: empid_2

เพิ่ม UNIQUE constraint อีกครั้ง:

mysql> ALTER TABLE employee ADD UNIQUE(empid);
Query OK, 0 rows affected (0.30 sec)

SHOW Index พบดัชนี 3 ตัว: 'empid', 'empid_2', 'empid_3'

สรุป: MySQL จะสร้าง unique indexes บนคอลัมน์ตามจำนวนครั้งที่เพิ่ม UNIQUE constraint