2

3000000 を超えるエントリを持つテーブルがあり、指定された ID で 500000 を削除する必要があります。私の考えは、次のようなクエリを作成することです。

DELETE FROM TableName WHERE ID IN (id1, id2, ...........)

簡単な C# コードで生成します。問題は、ID の配列に設定できる値の数に制限があるかどうかです。

そして、誰かがこの削除をより効率的に達成するためのより良い方法を持っているなら、私はアイデアを受け入れます.

4

2 に答える 2

1

WHERE ID < 1000000IDを(のように)どのような比較でも判別できない場合は、

  1. INSERTそれらを複数の挿入を含む一時テーブルに入れてから
  2. JOINこの一時的なテーブルをあなたに

ただし、挿入が問題になる可能性があります。あなたはそれをチェックするべきです。どうすればこれをスピードアップできますか?

  1. いくつかの一括で削除を行う
  2. IDを一時テーブルにまとめて挿入します
于 2011-04-23T17:14:19.437 に答える
1

最後に、それほど悪くない私のソリューションは次のとおりです。1. IDを並べ替えました(サーバーのページングを保存するため)。2。500個のIDを含むC#コードクエリで作成しました。3.クエリを1つずつ送信しました。

1000以上のIDを持つクエリを使用した場合、SQLサーバーでクエリを処理する時間が遅くなったと思います(SQLサーバーで実行するすべてのクエリが処理および最適化された後)。

これが誰かを助けることを願っています

于 2011-04-24T07:54:17.207 に答える