2013-08-31 67 views
0

我想從數據庫中刪除數據表中有關係,我應該與表查詢從父母和孩子與數據庫刪除數據。 這很慢。 我刪除了很多數據(百萬條記錄)45秒,但刪除幾行在2分鐘內執行 如何執行此與性能和快速?刪除與短小精悍或其他aproach與性能和快

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 [email protected] and dcd.DateAttendance >= @sDate and dcd.DateAttendance <= @eDate"; 
connection.Execute(deletequery, new { Personid = personId, sDate = sdate, eDate = edate }, commandTimeout: 1000); 
+0

where子句中使用的列的索引如何? – Steve

+0

如何設置級聯刪除? –

回答

3

短小精悍(或任何其他客戶端技術)的性能僅查詢的數量和行數退換事宜。你的查詢很少執行(但是做了很多工作)。 Dapper的表現在這裏並不重要。所有Dapper都會將查詢轉發給SQL Server。

您現在應該看看優化您的查詢。這不能作爲這個問題的一部分,因爲我們幾乎沒有關於表和數據參與的信息。這可能只是因爲查詢不能做得更快,因爲它正在做這麼多的DML工作。

您應該現在研究一下「如何在SQL Server中批量刪除」。這會幫助你。