PHP 一次性把几万条数据插入到数据库,花了30分钟,请问优化的办法,最好通过代码就能实现
目前代码的结构大概是下图:
这个和你用什么语言没啥关系,是你写的这个什么鬼代码?
哎,PHP就是这样被搞臭的。
新拼接sql语句,然后再执行,不要一次插入一条
循环内这样拼接
$mysqli = new mysqLi( host: DB_ HOST, username: DB_ USER, passwd: DB_ PWD ,
foreach ($arrays as $array){
$keys = join(",",array_keys($array));
$values ="'".join("','",array_values($array))."'"
$sqL = $sqL&"insert {$table} ($keys) values ({$values})";
}
$mysqli->query($sql);
有俩个地方需要你优化,第一:query执行时,可以一次执行多条插入语句,来节省请求数据库的次数。第二:插入语句的SQL优化,这一条也非常重要,使用了优化后的SQL能够大大提升执行效率。这里给你举一个简单的例子,自己按照这个修改。
# 假设有一张表表名为user,表只有3个字段,id,name,age,id字段是自动递增
INSERT INTO user (name,age) VALUES("张三",20),("李四",21),("王五",22),(....);
#构造一条这样的SQL,然后再执行,这个SQL切记不要一次插入太多数据,最好控制在1000条左右,如果是100万条数据,也就是插入1000次就好。绝对可以大大提升你数据的插入效率。
当然了,看你的代码中可能table是不确定的,一般情况下不可能几万条数据分别插入几万个表中吧,至少有很多数据是插入同一个表中的,那么就可以将这些数据合并成一条SQL,插入不同表中的数据分别来构造SQL即可。