2011-10-18 90 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