首頁 > 資料庫 > mysql教程 > 如何實作MySQL超快速批次插入行?

如何實作MySQL超快速批次插入行?

Patricia Arquette
發布: 2024-11-24 20:19:14
原創
741 人瀏覽過

How Can I Achieve Ultra-Fast Bulk Insertion of Rows into MySQL?

最佳化MySQL 行插入:實現超快速批次插入

在本文中,我們解決了在MySQL 中高效插入行的需求資料庫。我們提出了一個最佳化的解決方案,可以顯著減少插入時間,提高資料庫的整體效能。

背景

許多開發人員在將大量資料插入 MySQL 時遇到效能瓶頸。雖然使用單一 SQL 語句的基於循環的方法是有效的,但它們可能效率低且緩慢。

問題語句

在提供的範例中,基於循環的程式碼採用40 秒將 100,000 行插入 MySQL資料庫,凸顯了對更高效的需求

解決方案

我們使用批量插入技術替換基於循環的方法,使用StringBuilder 構建包含一次插入多行的單個SQL 語句。透過利用這種方法,我們實現了顯著的效能提升。

範例程式碼

最佳化後的程式碼如下:

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();
        }
    }
}
登入後複製

結果

使用批次🎜>結果

使用批次🎜>結果

    使用批次🎜>結果
  1. 使用批次🎜>結果
  2. 使用批量插入方法,插入時間為100,000 行從40 秒縮短到僅 3秒,性能顯著提升了 93%。
其他注意事項

安全性:

我們加入了 MySqlHelper.EscapeString以防止程式碼調優:可以透過調整批次大小和最佳化資料庫索引來進一步微調效能。 結論 透過實作這種大量插入技術,開發人員可以顯著提高 MySQL 資料庫插入操作的效率。此方法減少了插入時間,提高了整體效能,並透過添加的安全措施確保資料完整性。

以上是如何實作MySQL超快速批次插入行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板