MySQL 資料庫中的高效行插入
將大量行插入MySQL 資料庫可能是一項耗時的任務,尤其是在使用傳統方法如單行插入。為了提高性能,請考慮採用更有效率的技術。
單行插入與批次插入
通常,單行插入用於在以下位置插入單一記錄:一次。雖然這種方法很簡單,但在處理大型資料集時可能會變得效率低下。相反,請考慮使用批次插入同時插入多行。透過將多個行值連接到單一 INSERT 語句中,可以顯著節省時間。
程式碼實作
以下程式碼示範了一種批次插入方法,可以顯著改善插入速度:
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(); } } }
此程式碼迭代插入的行並透過以下方式構造批次INSERT 語句連接各個行值。產生的語句會同時插入所有行,從而顯著提高效能。
轉義輸入資料以確保安全
需要注意的是,大量插入可能會暴露潛在的安全漏洞。為了防止 SQL 注入,必須先轉義所有使用者輸入,然後再將其包含在 INSERT 語句中。如上面的程式碼所示,MySqlHelper.EscapeString 可以用於此目的。
以上是如何有效率地將大量行插入MySQL資料庫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!