ホームページ > データベース > mysql チュートリアル > MySQL データベースに大量の行を効率的に挿入するにはどうすればよいですか?

MySQL データベースに大量の行を効率的に挿入するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-24 02:28:09
オリジナル
1055 人が閲覧しました

How Can I Efficiently Insert Large Numbers of Rows into a MySQL Database?

MySQL データベースへの効率的な行挿入

MySQL データベースへの大量の行の挿入は、特に単一行挿入などの従来の方法。パフォーマンスを向上させるには、より効率的な手法の採用を検討してください。

単一行挿入と一括挿入

通常、単一行挿入は、個々のレコードを 1 つずつ挿入するために使用されます。ある時間。このアプローチは簡単ですが、大規模なデータセットを扱う場合は非効率になる可能性があります。代わりに、一括挿入を使用して複数の行を同時に挿入することを検討してください。複数の行値を 1 つの 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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート