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

KEY Keyword ใน MySQL หมายถึงอะไร (Synonym ของ INDEX)

ใน MySQL KEY เป็น Synonym (คำ 동의어) ของ INDEX ทั้งคู่หมายถึง Index เหมือนกัน

จาก Documentation

KEY is normally a synonym for INDEX. The key attribute PRIMARY KEY can also be specified as just KEY when given in a column definition. This was implemented for compatibility with other database systems.

การใช้งาน

1. PRIMARY KEY (สามารถเขียน KEY ได้)

-- ทั้งคู่เทียบเท่า
CREATE TABLE KeyDemo (
    id INT PRIMARY KEY
);

CREATE TABLE KeyDemo2 (
    id INT,
    KEY (id)  -- เทียบเท่า PRIMARY KEY (id)
);

2. UNIQUE KEY

CREATE TABLE t (
    email VARCHAR(255),
    UNIQUE KEY uk_email (email)
    -- เทียบเท่า UNIQUE INDEX uk_email (email)
);

3. INDEX / KEY (Non-unique)

CREATE TABLE t (
    name VARCHAR(100),
    KEY idx_name (name)       -- Non-unique Index
    -- INDEX idx_name (name)   -- เหมือนกัน
);

ตัวอย่างจากบทความ

CREATE TABLE KeyDemo (
    id INT,
    PRIMARY KEY (id)
);

INSERT INTO KeyDemo VALUES (1), (2);

SELECT * FROM KeyDemo;
+----+
| id |
+----+
| 1  |
| 2  |
+----+

SHOW INDEX Output

SHOW INDEX FROM KeyDemo;
+--------+------------+----------+--------------+-------------+-----------+
| Table  | Non_unique | Key_name | Seq_in_index | Column_name | Collation |
+--------+------------+----------+--------------+-------------+-----------+
| keydemo| 0          | PRIMARY  | 1            | id          | A         |
+--------+------------+----------+--------------+-------------+-----------+
-- Key_name = PRIMARY (เป็น PRIMARY KEY)
-- Non_unique = 0 (Unique)

Key vs Index ใน Context อื่น

  • PRIMARY KEY = Unique + Not Null + Clustered Index (InnoDB)
  • UNIQUE KEY = Unique + Allows Null (Multiple Nulls)
  • KEY / INDEX = Non-unique Index (Secondary Index)
  • FOREIGN KEY = Constraint (ไม่ใช่ Index โดยตรง แต่ MySQL สร้าง Index ให้อัตโนมัติ)

Best Practice

  • ใช้ INDEX สำหรับ Non-unique Index (ชัดเจนกว่า)
  • ใช้ PRIMARY KEY, UNIQUE KEY ตามมาตรฐาน
  • ชื่อ Index ให้มี Prefix: idx_ (Normal), uk_ (Unique), fk_ (Foreign Key)
  • หลีกเลี่ยงใช้ KEY คนเดียวสำหรับ Non-unique (สับสนกับ PRIMARY KEY)