我有以下查詢從表中提取數據與不應存在於另一個表中的記錄。Linq優化與記錄不匹配的查詢從另一個表
該查詢工作正常,但需要太多時間&性能受到極大影響。
我可以對此查詢進行哪些更改以獲得更好的性能,還是應該以另一種方式進行此操作?
var data = (from A in ctx.tblMachine
where
A.CompanyId == companyId &&
A.InOutDate >= tempDt &&
A.InOutDate <= toDate &&
!(from B in ctx.tblEntry
where
B.CompanyId == companyId &&
A.EmployeeId == B.EmployeeId &&
A.InOutDate == B.EntryDate &&
B.EntryMethod == "M"
select new
{
B.EmployeeId
}).Contains(new { EmployeeId = A.EmployeeId })
orderby
A.EmployeeId, A.InOutDate select new
{
A.EmployeeId,
A.InOutDate,
A.InOutFlag,
A.InOutTime
}).ToList();
看到什麼查詢該生產和簡介它(嘗試重新在SQL中更快,請注意清除緩存)。之後,在linq中寫入更改。如果此結果應在頁面中使用,請跳過「跳過」以僅顯示記錄的可見部分。 – mybirthname
我剛剛在SQL Server中轉換了上述查詢,當我跑到那裏時,它顯示了我1秒的結果。同樣的查詢,當我在LINQ中運行時間超過20分鐘。 – Anup