0

我想从数据库中删除与表有关系的数据,我应该使用表查询以使用 dapper 从父项和子项中删除数据。这很慢。我删除了很多数据(百万条记录)45 秒,但删除了几行在 2 分钟内执行如何以性能和快速执行此操作?

 var deletequery = @"delete from DailyCodeDetail " +
                   @" from DailyCodeDetail  dcd inner join DailyCode" +
                   @" dc on dcd.DailyCodeId = dc.id inner join DailyResult  d on d.id=dc.DailyResultId " +
                    @"where d.PersonId =@Personid and dcd.DateAttendance >= @sDate and dcd.DateAttendance <= @eDate";
connection.Execute(deletequery, new { Personid = personId, sDate = sdate, eDate = edate }, commandTimeout: 1000);
4

1 回答 1

3

dapper(或任何其他客户端技术)的性能仅与查询数量和返回的行数有关。您的查询很少执行(但做了很多工作)。Dapper 的性能在这里无关紧要。Dapper 所做的只是将查询中继到 SQL Server。

您现在应该优化您的查询。这不能作为这个问题的一部分来完成,因为我们几乎没有关于参与的表和数据的信息。可能只是查询不能更快,因为它正在做那么多 DML 工作。

您现在应该研究一下“如何在 SQL Server 中批量删除”。那会帮助你。

于 2013-08-31T12:07:49.967 回答