最速の方法で、一連のレコード(500,0)を一度にデータベースに挿入する必要があります。 1,7レコードを一度に挿入しようとしましたが、20分かかりました!!使ってます SQL-SERVER
、C#
。
次の表は高速挿入の手法には貢献しませんが、とにかくリンクして、挿入する必要のあるフィールドの数について理解を深めることにします(約500Kで複製してください)。 。
いくつかのオプションがあります。ここで頭に浮かぶ主なものがあります。
[〜#〜] ssis [〜#〜]-SQL Server Integration Services:これはSQL Servers ETLツールであり、ほとんどすべてのソースからほとんどすべての宛先にデータを移動できます。速い。
[〜#〜] bcp [〜#〜]-一括コピープログラム:これは、SQL Serverに付属するコマンドラインツールです。テキストファイルをSQL Serverに移動するのは非常に優れています。または、あるSQL Serverからネイティブ形式にエクスポートし、同じ形式を使用して別のSQL Serverにインポートすることもできます。 BCPも非常に高速ですが、SSISよりも少し制限があります。
INSERT INTO tablename SELECT fieldlist FROM othertable:これは、同じサーバー上の1つのSQLテーブルから別のSQLテーブルに移動することを前提としています。これは最速ですが、50万行ではかなり大きなトランザクションを調べているか、または言ったように分割する必要があります。
[〜#〜] openrowset [〜#〜]:これは、さまざまな形式からテーブルにデータをプルできるSQL Server関数です。それはかなり速いはずですが、私はそれをあまり使っていません。
一般的な注意:主キーはmbr_idです。これが(ID列ではなく)ソースデータに格納されているものである場合、ソースデータがmbr_idの順序であると、挿入ははるかに速くなります。
使っているので。 NET、実際には、外部プロセスを呼び出すことなくでデータをストリーミングできます。テーブル値パラメーターを使用します。詳細とこのメソッドの別のバリエーションへのリンクについては、StackOverflowで私の回答を参照してください。
これをより高速にするために(特にこれがテーブルの初期設定である場合)、インデックスの削除についても参照してください。