在 InnoDB 中执行批量 INSERT
时,我应该使用事务吗
START TRANSACTION;
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3);
INSERT INTO tbl_name (a,b,c) VALUES(4,5,6);
INSERT INTO tbl_name (a,b,c) VALUES(7,8,9);
COMMIT TRANSACTION;
或者合并多个查询?
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
如果重要的话,我正在使用 PHP 和 MySQL 数据库在同一台机器上。
最佳答案
我建议像您在底部示例中那样合并多个查询。
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
如果任一值对失败,则不会插入任何数据。此方法还发送较少的字符和往返数据库。少字的寓意可能没有那么吸引人,但还是有一点优势的。
编辑:
蒂姆有一个很好的问题。让我包括来自 MySQL doc 的信息
If you are inserting many rows from the same client at the same time, use INSERT statements with multiple VALUES lists to insert several rows at a time. This is considerably faster (many times faster in some cases) than using separate single-row INSERT statements. If you are adding data to a nonempty table, you can tune the bulk_insert_buffer_size variable to make data insertion even faster.
关于mysql - InnoDB : Bulk insert using transaction OR combine multiple queries?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34447305/