我需要从sql server表中删除数千甚至数十万行。我使用c#在List<int>
对象中有主键列表。我知道使用DELETE FROM table WHERE id IN (....)
效率不高。
这是我的整个表结构:
ID (int, PK, clustered index)
TypeID (int, FK, no index)
SourceID (int, NO FK, no index)
完成任务的最有效SQL是什么?感谢。
答案 0 :(得分:1)
无论哪种 1:让SQL Server确定密钥(即使用一个或多个JOINs in your DELETE statement)
,或者如果无法在SQL Server中生成密钥列表,
2:使用BCP或BULK INSERT进入SQL Server,然后在DELETE语句中加入它。