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 次迭代的測試顯示使用事務時效能顯著提高:
有事務:~2秒
這種最佳化技術提供了兩個數量級的速度提升,使其成為 MySQL 中批次值插入的高效且安全的解決方案使用 MySQLi 的資料庫。以上是如何優化 MySQLi 中的批量資料插入以提高速度和安全性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!