2017-01-21 10 views
0

ストアド・プロシージャ1には、レコード・セットを戻す選択照会があり、特定の日付が指定されています。私はそのレコードセットを通過するためにカーソルを使用しており、別のストアドプロシージャが呼び出される各行に対してです。ローの行操作のカーソルの代わり

ストアドプロシージャ2は、カーソルから各値の表に約20,000行を挿入します。

カーソルには約100個のレコードがあるため、挿入される行の総数は200Kになり、プロダクションで停止するまで数日間クエリが実行されます。

同じクエリは、開発者で約8分かかります。

SSIS(dev)でforeachコンテナを使用しようとしましたが、これは現在(dev)に5分かかっています。

これらのレコードを高速に挿入する方法はありますか?

テーブル値関数を使用すると考えましたが、最初のレコードセットに日付のみが含まれているため、2つの間の結合は困難です。

+0

プロダクションとデベロッパーのデータ量は同じですか?もしそうなら、それはなぜより遅いのですか? –

+1

カーソル内に200k行を挿入するには、数日かかることはありません。 –

+0

システムの使用率が他のゼロに近い場合でも、本番システムで同じパフォーマンスが確認できますか? –

答えて

0

ストアドプロシージャ2を実行している間、バルク挿入を調べるのはおそらく価値があります。

参照:https://www.simple-talk.com/sql/learn-sql-server/bulk-inserts-via-tsql-in-sql-server/

あなたはまた、負荷の最適なパフォーマンスを確保するために、インデックス、およびprod環境の構成を確認することをお勧めします。 上記のリンクは、挿入パフォーマンスを改善する方法についていくつか提案しています。

これは間違いなく読む価値があります。

関連する問題