3

私たちはこの問題と戦っています:

  • SQL Server 2008 R2(R2 !)に大きなテーブルがあります (数百万行)
  • このテーブルをウォークスルーする必要があり、コードによって各行を再計算する必要がありC#ます (そのため、アプリケーションからテーブルがロードされC#ます) 。

パフォーマンスが重要な場合、それを行う方法は? ある種のバッチ処理?

4

1 に答える 1

2

パフォーマンスが重要な場合は、SQL CLR を使用して新しい値を計算します。そのように update ステートメントを使用できます。SQL CLR では使用できるコードが制限されるため、これは簡単なオプションではない可能性があります。

SQL CLR がオプションでない場合は、別の方法があります。

整数の主キーがあると仮定します。私は次のようにします:

  • 行のバッチをリクエストする (10k 程度)
  • 更新を計算する
  • 更新を送信する
  • 繰り返す

秘訣は、すでに処理した行を追跡することです。最後に処理された行の ID 値を保持します。次のようなバッチをリクエストします。

select top 10000 *
from T
where ID > @lastIDProcessed
order by ID

これにより、信頼性の高い実行が高速に保証されます。

于 2012-04-18T14:18:11.877 に答える