Я работаю над уже существующим (проверяя производительность) оператором sql, и я обнаружил, что два предложения для обновления очень похожи, которые используют предложения WHERE IN (Subquery), и я думаю, что они очень медленно, я прошу вашей помощи найти другой способ, которым оба предложения работают, и выполнять работу быстрее.Улучшение производительности при обновлении с помощью WHERE IN Subquery
Вот «Мок» Код
UPDATE Table1 SET IdUser = @NewUserId
WHERE IdTask IN
(
SELECT T.IdTask
FROM Business N
JOIN Process P ON N.IdBusiness = P.CodBusiness
JOIN Proyect Pr ON P.CodProyect = Pr.IdProyect
JOIN Etap E ON E.CodProyect = Pr.IdProyect
JOIN Task T ON T.CodEtap = E.IdEtap
WHERE IdBusiness = @IdBusiness AND
T.Flag = 0
)
UPDATE Table2 SET Flag = 1
WHERE CodTask IN
(
SELECT T.IdTask
FROM Business N
JOIN Process P ON N.IdBusiness = P.CodBusiness
JOIN Proyect Pr ON P.CodProyect = Pr.IdProyect
JOIN Etap E ON E.CodProyect = Pr.IdProyect
JOIN Task T ON T.CodEtap = E.IdEtap
JOIN TaskAdvan TA ON TA.CodTask = T.IdTask
WHERE IdBusiness = @IdBusiness AND
T.Flag = 0
)
Большое спасибо
Убить подзапрос? Дайте нам планы запросов? – TomTom
Рассмотрите возможность перехода на страницу: http://sqlperformance.com/2012/12/t-sql-queries/left-anti-semi-join –