随笔 - 478  文章 - 0 评论 - 15 阅读 - 57万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

插入大量数据时,确保性能最优是很重要的。下面是几种在 PHP 中快速向 MySQL 插入大量数据的优化方案:使用多行插入:
最简单的方法是使用多行插入语句,将多条记录一次性插入到数据库。这比逐条插入要快得多,因为减少了连接和查询的开销。
$values = [];
for ($i = 0; $i < 10000000; $i++) {
    $values[] = "('$i', 'data')";
}

$valuesStr = implode(',', $values);
$query = "INSERT INTO your_table (column1, column2) VALUES $valuesStr";
mysqli_query($connection, $query);
使用预处理语句:
预处理语句可以减少 SQL 解析和编译的次数,从而提高性能。使用 mysqli 扩展的预处理功能。
$stmt = $connection->prepare("INSERT INTO your_table (column1, column2) VALUES (?, ?)");
for ($i = 0; $i < 10000000; $i++) {
   $stmt->bind_param("ss", $i, "data");
   $stmt->execute();
}

 

 

批量提交事务:
将插入操作放在一个事务中,然后批量提交事务。这可以显著提高性能,因为将多个插入操作合并到一个事务中可以减少磁盘写入次数。
mysqli_autocommit($connection, false);
for ($i = 0; $i < 10000000; $i++) {
   $query = "INSERT INTO your_table (column1, column2) VALUES ('$i', 'data')";
   mysqli_query($connection, $query);
}
mysqli_commit($connection);
mysqli_autocommit($connection, true);
使用 LOAD DATA INFILE:
MySQL 提供了 LOAD DATA INFILE 命令,可以更高效地导入大量数据。您可以将数据存储在文本文件中,然后使用这个命令导入。
$filename = 'data.txt';
$query = "LOAD DATA INFILE '$filename' INTO TABLE your_table (column1, column2)";
mysqli_query($connection, $query);
使用专业工具:
对于处理海量数据,有一些专业工具可以更好地优化性能,如 mysqldumpmysqlimport 等。这些工具在导入大数据集时可能会更高效。请注意,以上示例中的代码只是演示,您需要根据您的实际情况进行适当的调整和测试。在插入大量数据时,还需要注意数据库的性能配置,如适当的缓冲区设置、索引的优化等。
posted on   李留广  阅读(330)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示