การสร้าง Index บนคอลัมน์ชนิด INT
Index บนคอลัมน์ INT ช่วยให้ Query เร็วขึ้นเมื่อตารางมีข้อมูลมาก แต่ไม่ควรสร้างหากข้อมูลน้อย
สร้างตารางพร้อม Index
CREATE TABLE indexOnIntColumnDemo (
UserId INT,
UserName VARCHAR(20),
UserAge INT,
INDEX(UserId)
);
ตรวจสอบโครงสร้าง
DESC indexOnIntColumnDemo;
+----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | UserId | int(11) | YES | MUL | NULL | | | UserName | varchar(20) | YES | | NULL | | | UserAge | int(11) | YES | | NULL | | +----------+-------------+------+-----+---------+-------+
Key = MUL หมายถึงมี Index (Non-unique)
ทดสอบ Query
SELECT * FROM indexOnIntColumnDemo WHERE UserId = 1004;
เมื่อควรสร้าง Index
- ตารางมีแถวมาก (พันล้านขึ้นไป)
- คอลัมน์ใช้ใน WHERE, JOIN, ORDER BY บ่อย
- คอลัมน์มีค่าที่หลากหลาย (High Cardinality)
เมื่อไม่ควรสร้าง
- ตารางเล็ก (ไม่กี่ร้อยแถว) - Full Table Scan เร็วกว่า
- คอลัมน์มีค่าซ้ำมาก (Low Cardinality) เช่น เพศ, สถานะ
- ตารางที่ INSERT/UPDATE/DELETE บ่อยมาก - Index ทำให้ช้าลง