0

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