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

สร้าง Index บนคอลัมน์ INT ใน MySQL

การสร้าง 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 ทำให้ช้าลง