Я использую Microsoft SQL Server 2012. Я создал один запрос, чтобы получить подробную информацию, но он работает медленно с большими данными.Вот запрос:
SELECT p.BackgroundID,
sum(od.OrderQuantity) AS number
FROM approval.orderdetail od(nolock)
JOIN project p(nolock) ON od.ProjectID = p.projectid
AND p.BackgroundID IS NOT NULL
WHERE CAST(p.ModifiedDateUTC AS DATE) BETWEEN @startDate AND @endDate
AND EXISTS
(SELECT backgroundid
FROM background b
WHERE b.BackgroundID = p.BackgroundID
AND (@isActive = 2
OR b.IsActive = @isActive)
AND (@filtertype = 0
OR ((@filtertype IN (3, 5, 7, 8)
AND b.licenseid IS NULL
AND b.IsAR = 0)
OR (@filtertype IN (1, 4, 5)
AND b.IsAR = 1)
OR (@filtertype IN (2, 4, 6)
AND b.IsLicensed = 1))))
GROUP BY p.BackgroundID
Может кто-нибудь помочь мне оптимизировать запрос?Любые предложения по оптимизации производительности.
В настоящее время, когда я запускаю этот запрос в первый раз с большими данными, он обрабатывает почти 1 минуту, а затем при повторном запуске он обрабатывает только 3 секунды.
Вот план выполнения: План выполнения