一般情况下我们插入批量的数据的方式都是
这里第二种SQL执行效率高的主要原因是合并后日志量(MySQL的binlog和innodb的事务让日志)减少了,降低日志刷盘的数据量和频率,从而提高效率。通过合并SQL语句,同时也能减少SQL语句解析的次数,减少网络传输的IO。
insert into tableName ('id','name','value') values(1,'a','11');
insert into tableName ('id','name','value') values(2,'b','22');
insert into tableName ('id','name','value') values(3,'c','33');
但是如果一次插入大批量数据的时候,这种方式插入数据,效率很低,所以我们可以采用如下方式:
insert into tableName ('id','name','value') values(1,'a','11'),(2,'b','22'),(3,'c','33');
【数据对比】
下面是网上牛人提供一些测试对比数据,分别是进行单条数据的导入与转化成一条SQL语句进行导入,分别测试1百、1千、1万条数据记录。通过对比,可以发现修改后的插入操作能够提高程序的插入效率。
【缘由分析】
这里第二种SQL执行效率高的主要原因是合并后日志量(MySQL的binlog和innodb的事务让日志)减少了,降低日志刷盘的数据量和频率,从而提高效率。通过合并SQL语句,同时也能减少SQL语句解析的次数,减少网络传输的IO。