首頁  >  文章  >  資料庫  >  如何優化 MySQL 資料庫行插入以獲得更快的效能?

如何優化 MySQL 資料庫行插入以獲得更快的效能?

Patricia Arquette
Patricia Arquette原創
2024-11-26 10:30:10460瀏覽

How Can I Optimize MySQL Database Row Insertion for Faster Performance?

最佳化 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn