MySQLi 中批量值插入的增强技术
当面临安全地将大量值插入 MySQL 数据库的任务时,开发人员经常诉诸重复的准备好的语句,这对于大型数据集来说可能非常耗时。本文探讨了一种在不影响 SQL 注入安全性的情况下增强性能的技术。
问题:堆栈溢出和缓慢插入
一种常见的方法是在循环分别插入每个值。但是,当数据集很大时,此方法可能会导致堆栈溢出或执行速度变慢。
$array = ["array", "with", "about", "2000", "values"]; foreach ($array as $one) { $query = "INSERT INTO table (link) VALUES (?)"; $stmt = $mysqli->prepare($query); $stmt->bind_param("s", $one); $stmt->execute(); $stmt->close(); }
解决方案:事务和优化执行
优化上面的代码,我们可以采用事务和改进执行的组合策略:
$array = ["array", "with", "about", "2000", "values"]; $query = "INSERT INTO table (link) VALUES (?)"; $stmt = $mysqli->prepare($query); $stmt->bind_param("s", $one); $mysqli->query("START TRANSACTION"); foreach ($array as $one) { $stmt->execute(); } $stmt->close(); $mysqli->query("COMMIT");
实现细节:
性能评估
10,000 次迭代的测试表明使用事务时性能显着提高:
这种优化技术提供了两个数量级的速度提升,使其成为 MySQL 中批量值插入的高效且安全的解决方案使用 MySQLi 的数据库。
以上是如何优化 MySQLi 中的批量数据插入以提高速度和安全性?的详细内容。更多信息请关注PHP中文网其他相关文章!