Вот фактический план выполнения
, а запрос ниже
SELECT MemberId
,MemberCardId
,FirstName
,LastName
,STATE
,City
,Gender
,MemberAddress1
,ZipCode
,NewToHuamana
,Contract
,PhoneNumber
,CovidCohort
,AttributedStatus
,TotalGaps
,CloseGap
,OpenGaps
,RowNum
INTO #tbasic
FROM (
SELECT a.MemberId
,MemberCardId
,FirstName
,LastName
,STATE
,City
,Gender
,MemberAddress1
,ZipCode
,NewToHuamana
,Contract
,PhoneNumber
,CovidCohort
,AttributedStatus
,a.TotalGap AS TotalGaps
,a.CloseGap
,a.TotalGap - a.CloseGap AS OpenGaps
,ROW_NUMBER() OVER (
ORDER BY a.id
) AS RowNum
FROM [test_MBasic] a
WHERE (
@isOpen IS NULL
OR a.HasOpenGap = @isOpen
)
AND (
@isNewHumana IS NULL
OR @isNewHumana = a.NewToHuamana
)
AND (
@attributeStatus IS NULL
OR @attributeStatus = a.AttributedStatus
)
AND (
@regionCode IS NULL
OR @regionCode = a.RegionCode
)
AND (
@contract IS NULL
OR @contract = a.Contract
)
AND (
@state IS NULL
OR @state = a.STATE
)
AND (
@county IS NULL
OR @county = a.County
)
AND (
@nonCompliantMeasureLastYear IS NULL
OR @nonCompliantMeasureLastYear = a.NotCompliant_PreviousYear
)
) A
OPTION (RECOMPILE)
SELECT MemberId
,MemberCardId
,FirstName
,LastName
,STATE
,City
,Gender
,MemberAddress1
,ZipCode
,NewToHuamana
,Contract
,PhoneNumber
,CovidCohort
,AttributedStatus
,TotalGaps
,CloseGap
,OpenGaps
FROM #tbasic A
WHERE A.RowNum > (@pageNumber - 1) * @pageSize
AND A.RowNum <= @pageNumber * @pageSize
OPTION (RECOMPILE)
Я использовал перекомпилировать , чтобы игнорировать анализ параметров и временная таблица, чтобы избежать медленной разбивки на страницы. этот запрос занимает 8se c за время параметра @isOpen. Мне нужно ускорить больше, например, в пределах от 4 до 5se c он покажет 20 строк, когда я буду использовать параметр @isOpen.
У любого есть предложения, как я могу достичь этого до fini sh в 4se c.