У меня есть LINQ To Entities, которые объединяют несколько таблиц. Вот LINQ, который я использую.
var lastestEntry = (from c in etDataContext.Child_HomeVisitor
join s in etDataContext.ServiceCoordinators
on c.HomeVisitorID equals s.ServiceCoordinatorID
join ch in etDataContext.CountyHomeVisitorAgencies
on c.CountyHomeVisitorAgencyId equals ch.CountyHomeVisitorAgencyID
join a in etDataContext.Agencies
on ch.AgencyID equals a.AgencyID
join f in etDataContext.ServiceCoordinatorFundingSourceTypes
on c.PrimaryFundingSourceID equals f.ServiceCoordinatorFundingSourceTypeId
into joinFundingSource
from j in joinFundingSource.DefaultIfEmpty()
where c.ChildID.Equals(childID)
orderby c.EffectiveStartDate descending, c.CreatedDateTime descending
select new
{
c.EffectiveStartDate,
s.FirstName,
s.LastName,
a.Description,
j.FundingSource
}).FirstOrDefault();
В LINQPAD он работает около 20 секунд, однако, если я запустил сгенерированный оператор sql, он будет длиться всего 1 секунду. Я думаю, что большую часть времени тратится на генерацию этого оператора SQL из оператора LINQ, но почему это займет так много времени?