1

SQL Server 2008データベースから多くの行を削除する必要があります。スケーラブルでなければならないので、一括削除について考えていました.問題は、少なくとも私の場合、これに関する参照があまりないことです.

最初の要因は、削除するすべての行の ID を正確に把握しているため、TOP を使用したヒントはオプションではありません。また、保持したい行を少なくして削除するため、「ドロップ/一時」の必要はありません。テーブル/再作成」メソッド。

だから私は WHERE IN を使用することを考えていました.IDまたはXMLデータにIDを付けて、MERGEを使用して行を削除するオプションもあります。

1000 行以上を削除する必要がある場合、すべての ID を WHERE IN に送信すると問題になる可能性があります。MERGE の場合はどうでしょうか。一括挿入/更新/削除の問題をすべて解決できるのでしょうか。何を選ぶ?

4

1 に答える 1

2

1つのオプションは、既知のIDを「コントローラー」テーブルに格納してから、IDがコントローラーテーブルに表示されている行をメインデータテーブルから削除することです。

そうすれば、削除を簡単に「まとめる」ことができます。

DELETE FROM dbo.YourMainDataTable
WHERE ID IN (SELECT TOP (250) ID FROM dbo.DeleteControllerTable)

この削除ステートメントは、たとえば15分ごとに発生するSQLエージェントジョブで簡単に実行して、削除するものがあるかどうかを確認できます。それまでの間、テーブルにIDを追加してDeleteController、削除するIDを入力するプロセスを実際の削除プロセスから「切り離す」ことができます。

于 2010-10-02T16:03:37.913 に答える