1

このトピックについてここで多くの回答を読みましたが、誰もがBCP||を提案しています。SqlBulkCopy.net からのクラス

異なるテーブルから5targetTable結合に挿入するクエリがあります。selects

選択されているテーブルに正しいインデックスがあります。上のクラスター化 ID インデックスは 1 つだけtargetTableです。ただし、これには長い時間がかかります (~25 分)。私は5M行(x 20列)について話しています。

を見るとsp_who2、ほとんどの場合suspended...

bulkコピーを使用したいが、.net からは使用したくない(db は既にデータを取得しているため、C# に移動する必要はありません)。

質問

  • select コマンドで一括挿入 (bcp なし) を使用するにはどうすればよいですか?
  • また、なぜそれはほとんどの場合中断されますか? クエリの優先度を高くするにはどうすればよいですか?

ありがとうございました。

psbcpセキュリティ上の制限のため、ここでは使用できません...これを実行する権限がありません。

4

1 に答える 1

0

その通りです。通常より時間がかかっています。毎秒 3,000 行を取得しています。1 秒あたり 10k または 20k を簡単に取得できるはずです。最良の場合、CPU コアごとに毎秒 200k

最後だけでなく、テーブル全体に挿入していると思われます。この場合、1 秒あたり 3,000 行も珍しくありません。

いずれにせよ、一括コピーは役に立ちません。サーバーのみの挿入ステートメントよりも高速に挿入されるわけではありません。

ただし、できることは、複数のスレッドを使用して挿入することです。行ソースを N 個の異なる範囲に分割し、各範囲を個別の接続から同時に挿入します。これは、CPU バウンドの場合に役立ちます。IO バウンドの場合はそうではありません。

于 2012-06-28T13:50:46.743 に答える