一次性往mysql中插入10万条数据,用什么方法

将10W分成1000100,每次批量插入100条。

在表名(xxx)中插入值(xxx),(xxx);</前>

10万条数据批量插入,到底怎么做才快?

批量插入数据最快的方法是什么?要讨论这个问题,我们首先要了解两个主要思想。
一种是通过for循环逐条插入数据,另一种是生成SQL语句一次性插入所有数据。
关键是我们需要考虑网络I/O时间和SQL插入时间的比较来决定哪种方法更好。
为了测试,我们设计了一个简单的场景,批量插入5万条数据。
首先创建一个测试表,配置SpringBoot和MyBatis相关的依赖。
重点是配置MySQLJDBC驱动程序设置,特别是将`rewriteBatchedStatements`设置为`true`,以确保SQL的批量执行并避免低效的单次插入。
第一个测试计划是逐条插入数据。
通过创建相应的映射和XML文件并启用批处理模式来减少连接和连接释放时间。
测试结果显示,插入5万个数据元素需要901毫秒,速度快得令人难以置信。
第二种选择是生成一条SQL语句来一次插入所有数据。
同样,它是通过mapper和XML文件实现的,但比较表明这种方法需要1805毫秒,这比第一种解决方案要慢得多。
需要注意的是,在处理大量数据时,选项2生成的SQL可能会过长,导致MySQL处理困难,需要进行配置调整或分区处理,从而增加插入时间。
对比发现,批量插入数据时,方案1的效果更好。
当数据量达到10万、20万时,好处就更加明显。
MyBatisPlus提供的saveBatch方法也遵循单插入逻辑。
先分片,然后逐条执行,与图1的思路一致。
由此可见,批量插入数据的关键是有效利用批处理功能,减少网络I/O的时间。
综上所述,批量插入数据的最佳实践是利用批量处理特性,最大化SQL执行效率,减少网络I/O时间,进行高效的数据插入操作。