Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

điền MySQL với một loạt các hàng lớn một cách nhanh chóng

Nói chung, bạn có thể sử dụng bất kỳ một hoặc nhiều cách sau:

  • Bắt đầu giao dịch, thực hiện chèn, cam kết
  • Gói nhiều giá trị vào một lần chèn duy nhất vào truy vấn
  • Bỏ bất kỳ ràng buộc nào trước khi thực hiện chèn và khôi phục các ràng buộc sau khi chèn hàng loạt (ngoại trừ có thể là khóa chính, tuy nhiên, không chắc chắn lắm về điều đó)
  • Sử dụng insert into ... select nếu phù hợp

Cách đầu tiên (sử dụng các giao dịch) có nhiều khả năng hữu ích, nhưng tôi không chắc liệu nó có hoạt động trên các bảng myisam hay không, với innodb thì nó hoạt động rất tốt - tôi chỉ sử dụng những thứ đó khi tôi buộc phải sử dụng mysql, tôi thích postgresql hơn .

Trong trường hợp cụ thể của bạn, khi chèn 100000 hàng dữ liệu, bạn có thể làm như sau:

INSERT INTO status(id, responseCode, lastUpdate) SELECT @row := @row + 1 as row, 503, NOW() FROM 
(select 0 union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) t,
(select 0 union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) t2, 
(select 0 union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) t3, 
(select 0 union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) t4, 
(select 0 union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) t5, 
(SELECT @row:=0) t6;

Đã kiểm tra điều này trên máy của tôi, nhận được:

Query OK, 100000 rows affected (0.70 sec)
Records: 100000  Duplicates: 0  Warnings: 0

Tôi khá chắc rằng bạn không thể nhanh hơn nhiều so với 100000 hàng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP MySql:Print Tree - Parent Child Checkbox

  2. JDBC- không thể truy xuất giá trị và xóa bảng trong cơ sở dữ liệu mysql

  3. Mysql - Ngăn chặn các mục nhập trùng lặp của các cột được kết hợp với Chỉ mục duy nhất

  4. Cách điều chỉnh hoặc ưu tiên một truy vấn trong MySql

  5. Mysql giải pháp cho các chức năng cửa sổ