2011-10-18 8 views
1

myテーブル(sql sever 2000)には大量の行が含まれています。行を削除すると非常に遅くなります。SQL削除TOPステートメント

WHILEループ機能を使用してバッチごとにレコードを削除することをお勧めするポスト/フォーラムをいくつか見ました。

私のSQLは次のとおりです。

DELETE FROM Tprs_master where Fincmonth='201109'; 

私が書き換えた:

DELETE FROM(SELECT TOP 100 FROM tprs_master) AS t1 WHERE t1.Fincmonth='201109' 

が、それは動作しません。

上記のSQLをDELETE TOPスタイルに書き換えるにはどうすればよいですか?おかげ

答えて

5

MSDN DELETE pageは、例や構文を示します

DELETE TOP (100) FROM Tprs_master where Fincmonth='201109'; 

注:SQL Serverの2005+のみ

また

より多くの例Bulk DELETE on SQL Server 2008 (Is there anything like Bulk Copy (bcp) for delete data?)を参照

編集:OPは、SQL Serverを持っている2000

SET ROWCOUNT 100 
DELETE FROM Tprs_master where Fincmonth='201109'; 
SET ROWCOUNT 0 
+0

SQL Server 2000のSET ROWCOUNT:http://technet.microsoft.com/en-us/ library/ms188774.aspx – DavidEG

+0

@DavidEG:混乱する可能性のある中間結果も制限されるため、副作用があるとは言いませんでした。しかし、単純な削除でもOKです。そしてSQL Server 2000は古代の歴史です:) – gbn

+0

@ジョーヤン:SQL Serverのバージョンはどうですか? – gbn

関連する問題