Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Chèn nhiều hàng cùng lúc trong MySQL (multi-row INSERT)

Giới thiệu

MySQL cho phép chèn nhiều hàng trong một câu lệnh INSERT đơn giản bằng cách liệt kê nhiều bộ giá trị, cách nhau bằng dấu phẩy. Cách này nhanh hơn đáng kể so với chạy nhiều INSERT riêng lẻ.

Cú pháp

INSERT INTO ten_bang (cot1, cot2, ...) VALUES
    (val1_1, val1_2, ...),
    (val2_1, val2_2, ...),
    ...
    (valN_1, valN_2, ...);

Ví dụ thực hành

1. Tạo bảng DemoTable811

mysql> CREATE TABLE DemoTable811 (
    StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentName VARCHAR(100),
    StudentAge INT
);

2. Chèn 5 hàng một lần

mysql> INSERT INTO DemoTable811(StudentName,StudentAge) VALUES
    ('Chris',21),('Robert',22),('David',20),('Bob',19),('Carol',23);

3. Kết quả

+-----------+-------------+------------+
| StudentId | StudentName | StudentAge |
+-----------+-------------+------------+
|         1 | Chris       |         21 |
|         2 | Robert      |         22 |
|         3 | David       |         20 |
|         4 | Bob         |         19 |
|         5 | Carol       |         23 |
+-----------+-------------+------------+

Lợi ích hiệu suất

  • Giảm round-trip network (một lần giao tiếp thay vì N lần).
  • Giảm overhead parsing, optimization, locking.
  • Thường nhanh gấp 5-10 lần so với INSERT riêng lẻ trong loop ứng dụng.

Lưu ý

  • Giới hạn kích thước gói tin: max_allowed_packet (mặc định 4MB/64MB). Chèn quá nhiều hàng cùng lúc có thể vượt quá.
  • Sử dụng INSERT IGNORE hoặc ON DUPLICATE KEY UPDATE nếu cần xử lý trùng khóa.
  • Với dữ liệu rất lớn (hàng triệu hàng), cân nhắc LOAD DATA INFILE hoặc chia batch (ví dụ 1000-5000 hàng/lần).
  • Cột AUTO_INCREMENT sẽ tự động gán giá trị cho từng hàng.