У меня есть следующий запрос SQL, который в настоящее время выполняется и для его завершения требуется 1:17 (1 минута и 17 секунд).
SELECT R.SAMPNUM, count(R.SAMPNUM) as CTE1_O_Count
FROM Results R
Join SAMPLES O on R.SAMPNUM = O. SAMPNUM
Join Files F on F.fileno = O.fileno
where
(R.SA = 'Released' OR (R.SA = 'Rejected' AND R.Test like '%Grass%'))
AND R.S in ('Okay', 'Good')
AND F.Type <> 'Fruit'
AND Month(F.FDATE) = Month(getdate()) AND Year(F.FDATE) = Year(getdate())
GROUP BY R.SAMPNUM
После некоторого тестирования запроса я заметил, что изменение первый оператор , где оператор значительно изменил время выполнения.
1: 17-
(R.SA = 'Released' OR (R.SA = 'Rejected' AND R.Test like '%Grass%'))
0: 10-
(R.SA = 'Released'
0: 11-
(R.SA = 'Released' OR (R.SA = 'Rejected'))
1: 16-
(R.SA = 'Released' OR (R.SA = 'Rejected' AND R.Test = '%Grass%'))
С предоставленными результатами тестирования оператор AND R.Test
значительно влияет на запрос. Есть ли лучший способ реструктурировать этот запрос, чтобы он работал более эффективно?