Sql NewID()需要很长时间才能处理

Sql NewID()需要很长时间才能处理,sql,newid,Sql,Newid,我正在为一个有200多万条记录的表执行下面的代码,但是NewID需要很长时间才能运行 您能推荐一种替代方法来加快查询速度吗 DELETE FROM Table1 WHERE ID NOT IN (SELECT TOP 60000 ID FROM Table1 WHERE flag <> '1' ORDER BY NEWID()) AND ID NOT IN(SELECT ID FROM Table1 WHERE flag = '1'); 这个怎么样。。。应该快一倍 DELETE

我正在为一个有200多万条记录的表执行下面的代码,但是NewID需要很长时间才能运行

您能推荐一种替代方法来加快查询速度吗

DELETE FROM Table1
WHERE ID NOT IN (SELECT TOP 60000 ID FROM Table1 
WHERE flag <> '1'
ORDER BY NEWID()) 
AND
ID NOT IN(SELECT ID FROM Table1
WHERE flag = '1');

这个怎么样。。。应该快一倍

DELETE FROM Table1
WHERE ID NOT IN (SELECT TOP 60000 ID FROM Table1 
                 WHERE flag <> '1'
                 ORDER BY NEWID()) 
   AND flag != '1';

你的国旗有索引吗?提供一个创建表/索引定义的方法。为什么要按newid排序?您试图如何处理此代码?有了前60000个和NEWID的订单,它将随机选择60000个ID。这就是您的目标吗?看起来它是要删除除随机选择的60k行以外的所有具有标志“1”的行。是的,标志列具有索引。我使用Newid从表中随机选择60000行,其中标志为“1”,行标志为“1”。删除其余的行。我开始建议相同的,但是如果表中有重复的ID,并且flag的值不同,结果将不一样。