eliminar con dapper u otro enfoque con rendimiento y rápido

c# cascading-deletes dapper performance

Pregunta

Quiero eliminar los datos de la base de datos que las tablas tienen relación que debería consultar con las tablas para eliminar datos del padre y el hijo con dapper. esto es muy lento borro muchos datos (millones de registros) 45 segundos pero elimino Varias filas funcionan en 2 minutos ¿cómo se realiza esto con rendimiento y rápido?

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

Respuesta popular

El rendimiento de dapper (o cualquier otra tecnología de cliente) solo importa para el número de consultas y el número de filas devueltas. Su consulta se ejecuta con poca frecuencia (pero hace mucho trabajo). El rendimiento de Dapper no importa aquí. Todo lo que Dapper hace es retransmitir la consulta a SQL Server.

Ahora debería buscar optimizar su consulta. Esto no se puede hacer como parte de esta pregunta porque casi no tenemos información sobre las tablas y los datos que participan. Puede ser que la consulta no pueda hacerse más rápido porque está haciendo tanto trabajo DML.

Probablemente deberías investigar un poco sobre "cómo eliminar en bloque en SQL Server" ahora. Eso te ayudará.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué