У меня полусложный запрос LINQ, который выполняется очень медленно. Я не верю, что он использует подзапросы. Я пытался использовать ведение журнала и вижу только один сгенерированный запрос. код похож на следующий:
dc.defferedloadingenabled = false
dc.objecttrackingenabled = false
dataloadoptions dlo = new dataloadoptions
dlo.loadwith<MyQuestion>(q => q.lotsofresponses)
dc.LoadOptions = dlo
IQuerayable<Question> questions = dc.questions.where( q => q.ParentId == specificID).orderBy(q => q.Rank);
foreach (question in questions)
{
}
Нужна помощь, чтобы ускорить это. Я считаю, что я использую лучшие практики.
Ниже приведен сгенерированный SQL. Я удалил фактические ключи и имена столбцов. Счет (*) выглядит странно для меня.
SELECT [t0].[QId], [t0].[SId], [t0].[Tp], [t0].[St], [t0].[OL], [t0].[Is], [t0].[Tbl], [t0].[IsL], [t0].[Priority], [t1].[ResponseId], [t1].[QId] AS [QId2], [t1].[UId], [t1].[AN], [t1].[AT], (
SELECT COUNT(*)
FROM [dbo].[Responses] AS [t2]
WHERE [t2].[QId] = [t0].[QId]
) AS [value]
FROM [dbo].[Questions] AS [t0]
LEFT OUTER JOIN [dbo].[Responses] AS [t1] ON [t1].[QuestionId] = [t0].[QuestionId]
WHERE [t0].[SurveyId] = @p0
ORDER BY [t0].[Priority], [t0].[QId], [t1].[ResponseId]