ใน MySQL คีย์ประเภท MUL (Multiple) หมายถึงดัชนีที่ไม่ใช่ PRIMARY KEY และไม่ใช่ UNIQUE KEY อนุญาตให้มีค่าซ้ำได้ ใช้สร้างด้วย ADD KEY หรือ ADD INDEX
รูปแบบคำสั่ง
ALTER TABLE table_name
MODIFY COLUMN column_name data_type [NOT NULL],
ADD KEY (column_name);
MODIFY COLUMN- ปรับเปลี่ยนคอลัมน์ (เช่น เพิ่ม NOT NULL)ADD KEY (column_name)- สร้างดัชนีแบบ MULADD INDEX- ใช้แทนADD KEYได้ (หมายความว่าเหมือนกัน)
ตัวอย่างการใช้งาน
1. สร้างตารางโดยไม่มีดัชนี
CREATE TABLE Instructor (
Instructor_Id INT,
Instructor_Name VARCHAR(30),
Instructor_CourseName VARCHAR(100)
);
ตรวจสอบโครงสร้าง (DESC Instructor):
+-----------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+--------------+------+-----+---------+-------+
| Instructor_Id | int(11) | YES | | NULL | |
| Instructor_Name | varchar(30) | YES | | NULL | |
| Instructor_CourseName | varchar(100) | YES | | NULL | |
+-----------------------+--------------+------+-----+---------+-------+
คอลัมน์ Key ว่างทั้งหมด (ไม่มีดัชนี)
2. เพิ่มดัชนี MUL ให้ Instructor_Id (พร้อม AUTO_INCREMENT)
ALTER TABLE Instructor
MODIFY COLUMN Instructor_Id INT NOT NULL AUTO_INCREMENT,
ADD KEY (Instructor_Id);
ตรวจสอบอีกครั้ง:
+-----------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+--------------+------+-----+---------+----------------+
| Instructor_Id | int(11) | NO | MUL | NULL | auto_increment |
| Instructor_Name | varchar(30) | YES | | NULL | |
| Instructor_CourseName | varchar(100) | YES | | NULL | |
+-----------------------+--------------+------+-----+---------+----------------+
ตอนนี้ Instructor_Id มี Key = MUL และ Extra = auto_increment
3. เพิ่มดัชนี MUL ให้ Instructor_Name (Non-Primary Key)
ALTER TABLE Instructor
MODIFY COLUMN Instructor_Name VARCHAR(30) NOT NULL,
ADD KEY (Instructor_Name);
ผลลัพธ์สุดท้าย:
+-----------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+--------------+------+-----+---------+----------------+
| Instructor_Id | int(11) | NO | MUL | NULL | auto_increment |
| Instructor_Name | varchar(30) | NO | MUL | NULL | |
| Instructor_CourseName | varchar(100) | YES | | NULL | |
+-----------------------+--------------+------+-----+---------+----------------+
สรุปประเภท Key ใน MySQL
| Key | ความหมาย |
|---|---|
| PRI | Primary Key (ไม่ซ้ำ, ไม่เป็น NULL) |
| UNI | Unique Key (ไม่ซ้ำ, อนุญาต NULL ได้หลายค่า) |
| MUL | Non-unique Index (อนุญาตค่าซ้ำได้) |
| (ว่าง) | ไม่มีดัชนี |
ใช้ MUL เมื่อต้องการเพิ่มประสิทธิภาพการค้นหา/จัดกลุ่มแต่ยังต้องการอนุญาตค่าซ้ำได้