私はループして条件を(特定の列で)チェックし、 "IsPremiumUser"列をTRUEに更新する200.000+レコードのCustomerテーブルを持っています。 これを実行する最善の方法は何ですか?必要なヘルプSQL - 2つのLac +レコードを使った解析
は、私は私が二つの方法
- 利用しようと、各レコードを通じて
- ループを更新し、それを更新するには、これを達成することができます参照してください。
私はSQL Server2008を使用しています。
更新:C#またはJavaを使用してレコードをループするのではなく、SQL自体をループすることを意味しました。私は200.000以上のレコードがあるので、実行時間を短縮する方法を探しています。更新+結合を使用して20分かかります
更新2:ここにクエリがあります。
MERGE pref.personpreference AS T
USING (SELECT PR.PersonID,PR.PersonroleId from personrole PR) as S
ON (T.PersonRoleID = S.PersonRoleID)
WHEN MATCHED THEN
UPDATE SET T.SDRPERSONID = S.PersonId;
UPDATE PP
SET PP.SDRPersonID = PR.PersonID
FROM PREF.PersonPreference PP JOIN PersonRole PR
ON PP.PersonRoleID = PR.PersonRoleID
注:Mergeは実行に17分かかり、20分更新します。しかし、私は、これらのステートメントの間で、変更されたレコードの数が約1000だけ異なることが分かります。
あなたが実行するために20 +分を取って、あなたの更新ステートメントを投稿することができますか?
更新中のレコードはいくつですか?ちょうど[2Lakh] [1]が –であることが判明しました。 – nfa379