Use*_*987 6 c# asp.net asp.net-mvc bulk bulk-delete
我正在使用这个库来批量执行批量删除,如下所示:
while (castedEndedItems.Any())
{
var subList = castedEndedItems.Take(4000).ToList();
DBRetry.Do(() => EFBatchOperation.For(ctx, ctx.SearchedUserItems).Where(r => subList.Any(a => a == r.ItemID)).Delete(), TimeSpan.FromSeconds(2));
castedEndedItems.RemoveRange(0, subList.Count);
Console.WriteLine("Completed a batch of ended items");
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我一次删除了一批 4000 个项目,并将它们作为参数传递给查询...
我正在使用这个库来执行批量删除:
https://github.com/MikaelEliasson/EntityFramework.Utilities
Run Code Online (Sandbox Code Playgroud)
然而,这样的性能绝对是糟糕的......我测试了几次应用程序并删除了 80000 条记录,例如需要 40 分钟!?
我应该注意,我要删除的参数 (ItemID) 是 varchar(400) 类型,并且出于性能原因对其进行了索引....
是否有任何其他库可以使用或调整此查询以使其工作得更快,因为目前的性能绝对糟糕..:/
如果您准备使用存储过程,那么您可以在没有任何外部库的情况下执行此操作:
@idsid假设一个简单的 PK只是一个列)在sproc中使用
delete from table where id in (select id from @ids);
Run Code Online (Sandbox Code Playgroud)在您的应用程序中创建DataTable并填充以匹配 SQL 表
这个答案说明了这个过程。
任何其他选项都需要做与此相同的事情——或者效率较低的事情。
| 归档时间: |
|
| 查看次数: |
2066 次 |
| 最近记录: |