ใช่ Primary Key ถูก Index อัตโนมัติ (Implicit Index) ในทุก Storage Engine (InnoDB, MyISAM, Memory, etc.)
ตัวอย่าง
mysql> CREATE TABLE DemoIndex (
-> Id INT NOT NULL,
-> PRIMARY KEY(Id)
-> );
MySQL สร้าง Index ชื่อ PRIMARY ให้อัตโนมัติ
ตรวจสอบ Index
mysql> SHOW INDEX FROM DemoIndex;
+----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Visible | +----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+ | DemoIndex| 0 | PRIMARY | 1 | Id | A | 0 | NULL | NULL | | BTREE | | | YES | +----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+
ความแตกต่าง Engine
| Engine | PK Index Type | Clustered? | หมายเหตุ |
|---|---|---|---|
| InnoDB | BTREE | Yes (Clustered) | Data เก็บเรียงตาม PK (PK = Row Pointer) |
| MyISAM | BTREE | No (Non-Clustered) | PK เป็น Index แยก Data File แยก |
| Memory | HASH (Default) / BTREE | N/A | In-Memory |
Unique Constraint = Index ด้วย
CREATE TABLE t (id INT, email VARCHAR(100), UNIQUE(email)); -- สร้าง Index ชื่อ 'email' ให้อัตโนมัติ
สรุป: PRIMARY KEY = UNIQUE + NOT NULL + AUTO INDEX (Clustered ใน InnoDB) | ไม่ต้อง CREATE INDEX PRIMARY KEY เอง | UNIQUE Constraint ก็สร้าง Index ให้อัตโนมัติ