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

วิธีเร็วที่สุดในการ Insert ข้อมูลหลายแถวในคำสั่ง MySQL เดียว

วิธีการ Insert ข้อมูลหลายค่าในคำสั่ง MySQL เดียวอย่างมีประสิทธิภาพ

เมื่อต้องการเพิ่มข้อมูลจำนวนมากเข้าไปในตาราง MySQL การใช้คำสั่ง INSERT แบบแยกต่างหากแต่ละแถวจะทำให้ประสิทธิภาพลดลงอย่างมาก เนื่องจากแต่ละคำสั่งต้องมีการเชื่อมต่อและประมวลผลแยกกัน

❌ วิธีที่ไม่แนะนำ (ช้าและไม่มีประสิทธิภาพ)

INSERT INTO yourTableName VALUES (value1, value2, ...);
INSERT INTO yourTableName VALUES (value1, value2, ...);
INSERT INTO yourTableName VALUES (value1, value2, ...);
-- ทำซ้ำหลายครั้ง

✅ วิธีที่เร็วที่สุด (แนะนำ)

ใช้คำสั่ง INSERT เดียวพร้อมระบุค่าหลายชุดในวงเล็บ คั่นด้วยเครื่องหมายจุลภาค:

INSERT INTO yourTableName VALUES 
(value1, value2, ...),
(value1, value2, ...),
(value1, value2, ...),
...;

ตัวอย่างการใช้งานจริง

สร้างตารางตัวอย่าง:

CREATE TABLE DemoTable (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Name VARCHAR(20),
    Age INT
);

เพิ่มข้อมูล 3 แถวในคำสั่งเดียว:

INSERT INTO DemoTable (Name, Age) VALUES 
('Chris', 25),
('David', 29),
('Mike', 32);

ผลลัพธ์ที่ได้:

+----+-------+------+
| Id | Name  | Age  |
+----+-------+------+
|  1 | Chris |   25 |
|  2 | David |   29 |
|  3 | Mike  |   32 |
+----+-------+------+

ข้อดีของวิธีนี้

  • ลด Network Round-trip: ส่งคำสั่งเพียงครั้งเดียว
  • Transaction เดียว: ทำงานแบบ Atomic ทั้งชุด
  • ประสิทธิภาพดีกว่ามาก: เร็วกว่าการ Insert แยกต่างหากหลายเท่า
  • ลด Lock Contention: ล็อกตารางน้อยกว่า

ข้อควรระวัง

  • ขนาดคำสั่งไม่ควรเกิน max_allowed_packet (ค่าเริ่มต้น 4MB-64MB)
  • สำหรับข้อมูลมหาศาล ควรแบ่งเป็นชุดๆ (batch) ชุดละ 500-1000 แถว
  • พิจารณาใช้ LOAD DATA INFILE สำหรับข้อมูลปริมาณมากมาก