MySQL批量插入是指一次性插入多条记录到数据库中,而不是逐条插入。批量插入通常用于提高数据导入的效率。
INSERT INTO ... VALUES (...), (...), ...
语法。LOAD DATA INFILE
:适用于从文件中快速导入大量数据。INSERT ... ON DUPLICATE KEY UPDATE
:在插入时处理唯一键冲突。批量插入常用于数据迁移、日志导入、批量数据更新等场景。
确保数据库服务器和应用服务器之间的网络连接稳定且低延迟。
innodb_buffer_pool_size
、innodb_log_file_size
等。在批量插入前,可以考虑暂时删除不必要的索引,插入完成后再重新创建。
ALTER TABLE table_name DROP INDEX index_name;
-- 执行批量插入
ALTER TABLE table_name ADD INDEX index_name (column_name);
将大批量的数据分成多个小批次进行插入,减少单次插入的数据量。
START TRANSACTION;
INSERT INTO table_name (column1, column2) VALUES (value1, value2), (value3, value4);
-- 插入更多批次
COMMIT;
LOAD DATA INFILE
如果数据已经存在于文件中,可以使用LOAD DATA INFILE
进行快速导入。
LOAD DATA INFILE 'file_path' INTO TABLE table_name FIELDS TERMINATED BY ',' ENCLOSED BY '"';
INSERT ... ON DUPLICATE KEY UPDATE
在插入时处理唯一键冲突,减少插入操作。
INSERT INTO table_name (column1, column2) VALUES (value1, value2), (value3, value4)
ON DUPLICATE KEY UPDATE column1 = VALUES(column1), column2 = VALUES(column2);
通过以上方法,可以有效解决MySQL批量插入慢的问题,提高数据导入的效率。
领取专属 10元无门槛券
手把手带您无忧上云