Приведенный ниже код C # выполняется за 3 секунды.Я также перечислил вывод SQL Profiler.Если я изменяю инструкцию, чтобы не использовать динамический SQL, она выполняется в миллисекундах.Я не могу найти хороших ресурсов для решения этой проблемы.Но мне удалось найти статью, в которой объясняется, что в динамическом SQL, поскольку анализатор не знает значения параметров, он не может оптимизировать план запроса.
public string GetIncorporation(Parcel parcel)
{
var result = (from c in _context.Districts
where c.PARCEL_ID == parcel.PARCEL_ID && c.DB_YEAR == parcel.DB_YEAR && c.DISTRICT_CD.CompareTo("9000") < 0
select c).ToList();
exec sp_executesql N'SELECT
[GroupBy1].[A1] AS [C1]
FROM ( SELECT
MAX([Filter1].[A1]) AS [A1]
FROM ( SELECT
SUBSTRING([Extent1].[DISTRICT_CD], 0 + 1, 2) + N''00'' AS [A1]
FROM [STAGE].[DISTRICT] AS [Extent1]
WHERE ([Extent1].[PARCEL_ID] = @p__linq__0) AND ([Extent1].[DB_YEAR] = @p__linq__1) AND ([Extent1].[DISTRICT_CD] < N''9000'')
) AS [Filter1]
) AS [GroupBy1]',N'@p__linq__0 nvarchar(4000),@p__linq__1 int',@p__linq__0=N'0001-02-0003',@p__linq__1=2012
Iпытаюсь построить сервисный слой.Я не хочу иметь смешанную партию хранимых процедур и запросов Linq