supprimer avec Dapper ou autre approche avec performance et rapide

c# cascading-deletes dapper performance

Question

Je veux supprimer les données de la base de données que les tables ont une relation que je devrais interroger avec des tables pour supprimer les données du parent et de l'enfant avec dapper. c'est très lent. je supprime beaucoup de données (millions d'enregistrements) 45 secondes mais supprime Plusieurs lignes effectuent en 2 minutes comment effectuer cela avec des performances rapides?

 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);

Réponse populaire

Les performances de dapper (ou de toute autre technologie client) ne concernent que le nombre de requêtes et le nombre de lignes renvoyées. Votre requête est exécutée rarement (mais fait beaucoup de travail). La performance de Dapper n'a pas d'importance ici. Tout ce que Dapper fait est de relayer la requête à SQL Server.

Vous devriez maintenant chercher à optimiser votre requête. Cela ne peut pas être fait dans le cadre de cette question car nous n'avons presque aucune information sur les tables et les données qui y participent. Il se peut que la requête ne soit pas plus rapide car elle fait beaucoup de travail DML.

Vous devriez probablement rechercher un peu sur "comment supprimer en bloc dans SQL Server" maintenant. Cela vous aidera.



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi