最佳化 MySQL 資料庫行插入以提高效能
將大量行高效插入 MySQL 資料庫的挑戰是眾所周知的。雖然所提供的使用單獨插入的程式碼片段可能很熟悉,但它存在效能瓶頸。然而,有一種替代方法可以顯著提高插入速度。
多行插入
與其對每一行執行單獨的插入,效率更高將多行分組到單一插入語句中。此技術在以下修訂後的程式碼中實現:
public static void BulkToMySQL() { string ConnectionString = "server=192.168.1xxx"; StringBuilder sCommand = new StringBuilder("INSERT INTO User (FirstName, LastName) VALUES "); using (MySqlConnection mConnection = new MySqlConnection(ConnectionString)) { List<string> Rows = new List<string>(); for (int i = 0; i < 100000; i++) { Rows.Add(string.Format("('{0}','{1}')", MySqlHelper.EscapeString("test"), MySqlHelper.EscapeString("test"))); } sCommand.Append(string.Join(",", Rows)); sCommand.Append(";"); mConnection.Open(); using (MySqlCommand myCmd = new MySqlCommand(sCommand.ToString(), mConnection)) { myCmd.CommandType = CommandType.Text; myCmd.ExecuteNonQuery(); } } }
改進的效能
此方法可顯著減少插入時間。原始程式碼需要 40 秒插入 100k 行,而修改後的程式碼只需 3 秒即可完成任務,提升了 90% 以上!
說明
提高效率的關鍵在於盡量減少資料庫往返次數。透過將多行分組到單一語句中,我們減少了與建立和關閉多個資料庫連線相關的開銷。然後,資料庫可以將整個插入群組作為單一操作進行處理,從而無需單獨執行每一行。
安全注意事項
總是重要的是建立 SQL 語句時防止程式碼注入。在提供的程式碼中使用 MySqlHelper.EscapeString 可確保安全轉義潛在的惡意輸入,從而防止 SQL 注入漏洞。
以上是如何優化 MySQL 資料庫行插入以獲得更快的效能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!