こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

SQL SERVER で大量データの削除

delete from table1 where id = 1;
delete from table1 where id = 2;
delete from table1 where id = 3;

もしくは、

delete from table1 where (id = 1) or (id = 2) or (id = 1)

という具合のSQLを実行します。
条件は大体20万件程度です。

こちらを実行するとかなり遅いので、
なんとか一括で早く実行する方法はないものでしょうか?

今のところ、プログラムの都合上、プロシージャの中で行なってます。

PROCEDURE UPDATE(@DELSQL nvarchar(max))
EXEC (@DELSQL)

@DELSQLに上記SQLが入ります。

大量のINSERTの時は、BULK INSERTのようなやり方があり、
回避できたのですが、困ってます。

どうかよろしくお願いします。

投稿日時 - 2013-06-18 15:33:16

QNo.8139318

すぐに回答ほしいです

質問者が選んだベストアンサー

高速削除といえばTRUNCATEですが、WHERE句の指定があるので使えないです。となると、基本はIndexか条件見直しになるかと思います。

もし列idにIndexをはっていないようであれば、はってみてください。

あと、orではなくinを使ってみてはいかがでしょうか?細かい名称は忘れてしまったのですが、Management Studioには実行時のパフォーマンスを測定する機能があるので、orとinでそれぞれそのパフォーマンス値を比較すれば、具体的にどのくらい効果があるのか数値で確認できます。

ご参考までに。

投稿日時 - 2013-06-22 07:11:02

お礼

別途ワークテーブルを作成し、
inで条件追加したら早かったです。

ありがとうございました。

投稿日時 - 2013-07-03 09:04:10

ANo.1

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(1)

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-