2011-10-18 142 views
1

我的表(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

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

+0

@DavidEG:我沒有提及它有副作用,因爲它也限制了中間結果,這可能會造成混淆。雖然應該用簡單的DELETE來確定。而SQL Server 2000現在是古老的歷史:) – gbn

+0

@Joe Yan:請問哪個版本的SQL Server? – gbn