ความแตกต่างหลัก: ขนาดและช่วงค่า
| คุณสมบัติ | INT | BIGINT |
| ขนาดเก็บข้อมูล | 4 ไบต์ (32-bit) | 8 ไบต์ (64-bit) |
| ค่าสูงสุด Unsigned | 4,294,967,295 | 18,446,744,073,709,551,615 |
| ค่าสูงสุด Signed | 2,147,483,647 | 9,223,372,036,854,775,807 |
| ค่าต่ำสุด Signed | -2,147,483,648 | -9,223,372,036,854,775,808 |
ตัวอย่างใช้งานกับ ZEROFILL
สร้างตาราง
CREATE TABLE BigintandintDemo (
Number1 BIGINT ZEROFILL,
Number2 INT ZEROFILL
);
เพิ่มข้อมูล
INSERT INTO BigintandintDemo VALUES (234556667777, 678999);
ผลลัพธ์การแสดงผล
| Number1 (BIGINT) | Number2 (INT) |
| 00000000234556667777 | 0000678999 |
เมื่อไหร่ควรใช้ตัวไหน?
- INT: ใช้ทั่วไป, ID, จำนวนนับ, อายุ, รหัสไปรษณีย์, ปี ค.ศ. (เพียงพอสำหรับ 99% ของกรณี)
- BIGINT: ต้องการค่ามากกว่า 2 พันล้าน, Timestamp มิลลิวินาที, ID แบบ Distributed (Snowflake), การคำนวณทางวิทยาศาสตร์/การเงินขนาดใหญ่
- ZEROFILL: ใช้สำหรับการแสดงผลเท่านั้น (เช่น รหัสสมาชิก 00000123) - Deprecated ใน MySQL 8.0.17+
คำแนะนำ
อย่าใช้ BIGINT โดยไม่จำเป็น เพราะ:
- ใช้พื้นที่เก็บข้อมูลมากกว่า 2 เท่า
- ดัชนี (Index) ใหญ่กว่า → ช้ากว่า
- หน่วยความจำมากกว่า