テーブルがあり、削除する必要があるテーブルが約150万件あります。以前は、一時テーブルを使用していました。これにより、トランザクションログのサイズがかなり急速に増加しました。問題は、いったん1つの結果セットを実行すると、別の150万以上の結果がある場所に移動する必要があるということです。これのパフォーマンスはかなり遅く、テーブルをtempデータベースに書き込むのではなく、table
変数を使用する必要があるのだろうかと思います。私は最初の150万件の+レコードを選択するとテンポラリテーブルとテーブル変数
EDIT私は一時テーブルを使用します。
残りのレコードをクリーンアップするために 'while'ループの最後に別の' delete'を持たなければならないと思いますか? –
「トランザクション」ではどのように動作しますか?私は 'トランザクション'を 'while'の中に入れますか? –
@アードマン:そうは思わない。 whileループは、削除によって固定されたバッチサイズ(私の例では1,000レコード)よりも小さいものが削除されると終了します。これは、必要な削除がすべて完了したことを示します。したがって、1,400行を削除すると、ループは2回実行され、最初に1,000レコード、次で400レコードが削除されます。 400 <1000がブレークをトリガします。 –