TOPまたは何らかの種類のページングをSQL Updateステートメントに追加できますか?更新トップのようなバッチでSQL UPDATEを実行するにはどうすればよいですか?
私はUPDATE
クエリを持って、それがダウンして、このようなものになる:
UPDATE XXX SET XXX.YYY = #TempTable.ZZZ
FROM XXX
INNER JOIN (SELECT SomeFields ...) #TempTable ON XXX.SomeId=#TempTable.SomeId
WHERE SomeConditions
このアップデートには、数百万レコードに影響を与える、と私はバッチでそれを行う必要があります。当時100.000と同じです(注文は関係ありません)
これを行う最も簡単な方法は何ですか?
'TOP'ような何かを行うことができますか?第2のバッチは、最初のバッチがどこで終わったのですか? –
1つの可能性は、更新されるごとに各レコードにフラグを立て、既に更新されたレコードを無視して別の節を追加することです。これは一時的にテーブルに列を追加する必要があります(レコードが更新自体によって更新されたかどうかを確認する効率的な方法がない限り) – ean5533
これは簡単なことです。UPDATE TOP 100000でテストしましたが、 '100000に近い不正な構文 '、TOP(100000)の更新が動作するようです。 @MartinSmith:私の場合、「第2のバッチ」は重要ではありません。最初のバッチが更新されると、それはwhere条件にもう一致しません。 –