使用字符串拼接SQL,执行一次,效率更高。
$db = new PDO("mysql:host=;dbname=","","");
$sql = "INSERT INTO `table` () VALUES ";
foreach($arr as $k){
$sql .= "";
}
$sql = substr($sql,0,strlen($sql)-1);
$db->exec($sql);
在执行脚本处理时,可能需要设置PHP内存和MySQL接受的包大小
1.设置PHP内存
ini_get('memory_limit'); //查看当前设置的内存
ini_set('memory_limit','1024M'); //设置内存限制
2.设置MySQL接受的包大小
MySQL根据配置文件会限制Server接受的数据包大小。有时候大的插入和更新会受 max_allowed_packet 参数限制,导致大数据写入或者更新失败。
查询max_allowed_packet
select @@max_allowed_packet;
show variables like 'max_allowed_packet';
mysql> select @@max_allowed_packet;
+----------------------+
| @@max_allowed_packet |
+----------------------+
| 16777216 |
+----------------------+
1 row in set (0.00 sec)
修改方法1:
修改my.cnf
[mysqld]
max_allowed_packet = 100M
修改方法2:
mysql> set global max_allowed_packet = 100 * 1024 * 1024;
临时修改,mysql重启后失效
网友评论