การใช้ ALTER TABLE ... DROP INDEX
ใน MySQL Unique Key เป็นประเภทหนึ่งของ Index ดังนั้นการลบ Unique Key ใช้คำสั่ง DROP INDEX ภายใน ALTER TABLE
รูปแบบคำสั่ง
ALTER TABLE your_table_name DROP INDEX your_index_name;
ตัวอย่างการใช้งานจริง
1. สร้างตารางพร้อม Unique Key
CREATE TABLE DropIndexDemo (
BookId INT UNIQUE KEY,
BookName VARCHAR(200)
);
2. ตรวจสอบชื่อ Index (Key_name)
SHOW INDEX FROM DropIndexDemo;
| Table | Non_unique | Key_name | Column_name |
|---|---|---|---|
| dropindexdemo | 0 | BookId | BookId |
👉 ชื่อ Index คือ BookId (ตั้งชื่ออัตโนมัติจากชื่อคอลัมน์)
3. ลบ Unique Key
ALTER TABLE DropIndexDemo DROP INDEX BookId;
4. ตรวจสอบโครงสร้างหลังลบ
DESC DropIndexDemo;
| Field | Type | Null | Key | Default |
|---|---|---|---|---|
| BookId | int(11) | YES | NULL | |
| BookName | varchar(200) | YES | NULL |
✅ คอลัมน์ BookId ไม่มี UNI ในคอลัมน์ Key แล้ว
กรณี Unique Key หลายคอลัมน์ (Composite Unique)
CREATE TABLE example (
col1 INT,
col2 INT,
UNIQUE KEY uk_name (col1, col2)
);
-- ลบด้วยชื่อ Index ที่ตั้งเอง
ALTER TABLE example DROP INDEX uk_name;
คำสั่งทางเลือกอื่น
ALTER TABLE table_name DROP KEY index_name(ทำงานเหมือนกัน)- ใน MySQL 8.0+ ใช้
DROP CONSTRAINTไม่ได้สำหรับ Unique Key (ใช้ได้เฉพาะ Foreign Key)
ข้อควรระวัง
- 🔍 ตรวจสอบชื่อ Index จริงด้วย
SHOW INDEXก่อนลบ - 🗑️ การลบ Index อาจทำให้ Query ที่ใช้ Index นั้นช้าลง
- 🔄 หากต้องการลบและสร้างใหม่ ให้ทำใน Transaction เดียวกัน (ถ้า Engine รองรับ)