Я пытался оптимизировать запрос ниже.его обновление временной таблицы.я думаю, что из-за подзапросов выполнение занимает много времени.Есть ли альтернативный способ эффективно написать этот запрос?
UPDATE CA
SET CA.GP = (ISNULL(BOY.GP, 0) + ISNULL(CA.GP, 0) + ISNULL(NI.GP, 0) + ISNULL(TI.GP, 0) + ISNULL(OI.GP, 0)) - (ISNULL(NDE.GP, 0) + ISNULL(DS.GP, 0) + ISNULL(OD.GP, 0)),
CA.B7 = (ISNULL(BOY.B7, 0) + ISNULL(CA.B7, 0) + ISNULL(NI.B7, 0) + ISNULL(TI.B7, 0) + ISNULL(OI.B7, 0)) - (ISNULL(NDE.B7, 0) + ISNULL(DS.B7, 0) + ISNULL(OD.B7, 0)),
CA.TB = (ISNULL(BOY.TB, 0) + ISNULL(CA.TB, 0) + ISNULL(TI.TB, 0) + ISNULL(OI.TB, 0)) - (ISNULL(NDE.TB, 0) + ISNULL(DS.TB, 0) + ISNULL(OD.TB, 0)),
CA.Other = (ISNULL(BOY.Other, 0) + ISNULL(CA.Other, 0) + ISNULL(NI.Other, 0) + ISNULL(TI.Other, 0) + ISNULL(OI.Other, 0)) - (ISNULL(NDE.Other, 0) + ISNULL(DS.Other, 0) + ISNULL(OD.Other, 0))
FROM #CADetail CA
JOIN (SELECT GP,
B7,
TB,
Other,
TC
FROM #CADetail
WHERE CAAccount = N'Balance at beginning of year') BOY ON BOY.TC = CA.TC
JOIN (SELECT GP,
B7,
TB,
Other,
TC
FROM #CADetail
WHERE CAAccount = N'CA Contributed') CA ON CA.TC = CA.TC
JOIN (SELECT GP,
B7,
TB,
Other,
TC
FROM #CADetail
WHERE CAAccount = N'Net Income/Loss') NI ON NI.TC = CA.TC
JOIN (SELECT GP,
B7,
TB,
Other,
TC
FROM #CADetail
WHERE CAAccount = N'T Exempt Income') TI ON TI.TC = CA.TC
JOIN (SELECT GP,
B7,
TB,
Other,
TC
FROM #CADetail
WHERE CAAccount = N'Other Increases') OI ON OI.TC = CA.TC
JOIN (SELECT GP,
B7,
TB,
Other,
TC
FROM #CADetail
WHERE CAAccount = N'Non-Deductible Expenses') NDE ON NDE.TC = CA.TC
JOIN (SELECT GP,
B7,
TB,
Other,
TC
FROM #CADetail
WHERE CAAccount = N'DSs') DS ON DS.TC = CA.TC
JOIN (SELECT GP,
B7,
TB,
Other,
TC
FROM #CADetail
WHERE CAAccount = N'Other Decreases') OD ON OD.TC = CA.TC
WHERE CA.CAAccount = N'Balance at end of year';
Выше обновление занимает около 15 минут, чтобы получить обновление.Есть ли лучший способ оптимизировать этот запрос?