性能があり速いdapperやその他のaproachで削除する

c# cascading-deletes dapper performance

質問

私は、データベースから削除するデータをテーブルに関係を持っている必要があります私は親と子のデータを削除するためにテーブルを照会する必要があります。これは非常に遅いです。私はたくさんのデータを削除します(何百万レコードも)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);

人気のある回答

dapper(または他のクライアント技術)のパフォーマンスは、クエリの数と返される行の数だけに関係します。あなたのクエリは頻繁に実行されません(しかし、多くの作業があります)。 Dapperのパフォーマンスはここでは関係ありません。すべてのDapperはSQL Serverにクエリを中継します。

クエリを最適化する必要があります。これは、この質問の一部として実行することはできません。なぜなら、テーブルとデータに関する情報がほとんどないからです。そのような多くのDML作業を行っているため、クエリをより速く行うことができないことがあります。

おそらく、 "SQL Serverの一括削除方法"について少し研究しておくべきでしょう。それがあなたを助けるでしょう。



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow