次のことをどのように行うべきかについてのアドバイスを探しています。
- SQL サーバーに、約 3 ~ 600 万のレコードと 51 列のテーブルがあります。
- 数学的計算で取り込まれた 45 列のデータから値を計算した後、1 列のみを更新する必要があります。
- 私はすでに C# で計算を行っており、そこから Datatable を作成できます [数百万のレコードが含まれています]。
今、最も効率的な方法でそれらをデータベースに更新したいと考えています。私が知っているオプションは
- データ リーダーでループを使用して計算を行い、DataTable を作成するため、すべてのレコードで更新クエリを実行します。
- 一時テーブルを作成し、SQLBulkCopy を使用してデータをコピーし、後で MERGE ステートメントを使用する
- 実行するのは非常に困難ですが、SQL 内で関数を作成してすべての計算を実行し、一度に更新する条件なしで単純な更新を実行することができます。
どちらの方法がより速いか、より良いかはわかりません。何か案が?
編集:ストアドプロシージャを使用するのが怖い理由
- まず、どのように書いたのかわかりません。これを行うのはかなり新しいです。多分それは今それをする時です。
- 私の数式は、1 つの列を取り、それらに 1 つの数式を適用し、[列名の一部でもある] 追加の定数値を加えてから、45 列すべてを取り、別の数式を適用します。
- 結果は46列目に格納されます。
ありがとう。