ホームページ > データベース > mysql チュートリアル > データベースへの DataTable の挿入を最適化して速度を最大化するにはどうすればよいですか?

データベースへの DataTable の挿入を最適化して速度を最大化するにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-08 00:00:39
オリジナル
131 人が閲覧しました

How Can I Optimize DataTable Insertion into a Database for Maximum Speed?

DataTable からデータベースへのインポートの高速化: ベスト プラクティス

大規模なデータセットを DataTable からデータベースにインポートするには、処理時間を最小限に抑えるための効率的な手法が必要です。 foreach ループを使用した行ごとの挿入は一般的なアプローチですが、大量のデータセットの場合は非効率です。

優れたソリューションは SqlBulkCopy で、ストアド プロシージャを必要とせずにパフォーマンスが大幅に向上します。

SqlBulkCopy の実装は比較的簡単です。 まずデータベース接続を作成し、SqlBulkCopyOptions.KeepIdentity を利用して ID 列を保持します。

次に、ColumnMappings プロパティを使用して、DataTable 列を対応するデータベース テーブルの列にマップします。

最後に、宛先テーブルを指定し、WriteToServer メソッドを使用して DataTable データを転送します。

SqlBulkCopy の使用法を示すコード例を次に示します。

<code class="language-csharp">using (var bulkCopy = new SqlBulkCopy(_connection.ConnectionString, SqlBulkCopyOptions.KeepIdentity))
{
    // Map columns between DataTable and SQL table
    foreach (DataColumn col in table.Columns)
    {
        bulkCopy.ColumnMappings.Add(col.ColumnName, col.ColumnName);
    }

    bulkCopy.BulkCopyTimeout = 600; // Increased timeout for large datasets
    bulkCopy.DestinationTableName = destinationTableName;
    bulkCopy.WriteToServer(table);
}</code>
ログイン後にコピー

SqlBulkCopy を使用すると、データ挿入速度が大幅に向上し、大規模な DataTable を処理するときに最適なパフォーマンスが得られます。 非常に大きなデータセットの場合は、必要に応じて BulkCopyTimeout を調整することを忘れないでください。

以上がデータベースへの DataTable の挿入を最適化して速度を最大化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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