我想一次在我的SQL表中插入更多行。我想找出做这件事的最好方法。
1.)对每条数据使用INSERT语句
INSERT INTO message (email, txt) VALUES ('user1@gmail.com', 'txt1');
INSERT INTO message (email, txt) VALUES ('user2@gmail.com', 'txt2');
INSERT INTO message (email, txt) VALUES ('user3@gmail.com', 'txt3');2)或者使用bulk insert代替它?
INSERT INTO message (email, txt) VALUES ('user1@gmail.com', 'txt1'),('user2@gmail.com', 'txt2'),('user3@gmail.com', 'txt3');我们讨论的是每次插入数十条数据。从优化的角度来看,哪一个更好?
顺便说一下,txt是一个文本类型的列。
发布于 2011-08-16 21:50:07
这取决于您的事务行为,以及mysql服务器的延迟。
但总的来说,是的,多行插入是很好的。但要小心不要遇到最大数据包大小(select @@max_allowed_packet )。
即使自动提交处于打开状态,多行插入也可以在单个事务中完成。这减少了事务日志中的同步次数,这可能会提高插入性能。这是假设innodb_flush_log_at_trx_commit = 1,如果您关心您的数据,它应该是这样的!
发布于 2011-08-16 21:42:21
对于较小的数据集,这并不重要。但是,通常情况下,大容量插入会更快。
发布于 2011-08-16 22:01:51
我认为您应该看看SQL Bulk Insert。http://msdn.microsoft.com/en-us/library/ms188365.aspx
使用Bulk Insert时,要小心触发器。必须编写它们来处理批量操作。
建议的BatchSize是每批750,000行。因此,当您使用Bulk时:
https://stackoverflow.com/questions/7079066
复制相似问题