I have a query that is running for more than three hours without completing.
I realized that the bad part is the Filter operator which has a cost of 89%.
WITH FASES_NUMERADAS_CTE AS ( SELECT NUM_PROCES, DES_SISTEM_PROCES, DAT_PRIMEIRA_FASE, CLASSE_SISTEMA_ATUAL, CLASSE_SISTEMA_ANTERIOR, DAT_CLASSE_ATUAL, ROW_NUMBER() OVER ( PARTITION BY NUM_PROCES, DES_SISTEM_PROCES, DAT_PRIMEIRA_FASE ORDER BY DAT_CLASSE_ATUAL) AS RN FROM #TEMP_COMPLE_10966_GERAL ), FASES_RN_1_CTE AS ( SELECT * FROM FASES_NUMERADAS_CTE WHERE RN = 1 )UPDATE TC SET TC.CLASSE_SISTEMA_ATUAL = T2.CLASSE_SISTEMA_ATUAL FROM FASES_RN_1_CTE T1 CROSS APPLY ( SELECT TOP 1 T.CLASSE_SISTEMA_ATUAL FROM FASES_NUMERADAS_CTE T WHERE T.NUM_PROCES = T1.NUM_PROCES AND T.DES_SISTEM_PROCES = T1.DES_SISTEM_PROCES AND T.DAT_PRIMEIRA_FASE = T1.DAT_PRIMEIRA_FASE AND T.RN > 1 ORDER BY T.RN DESC) AS T2 INNER JOIN #TEMP_COMPLE_10966_GERAL TC ON TC.NUM_PROCES = T1.NUM_PROCES AND TC.DES_SISTEM_PROCES = T1.DES_SISTEM_PROCES AND TC.DAT_PRIMEIRA_FASE = T1.DAT_PRIMEIRA_FASE AND TC.DAT_CLASSE_ATUAL = T1.DAT_CLASSE_ATUAL AND TC.CLASSE_SISTEMA_ANTERIOR = T1.CLASSE_SISTEMA_ANTERIOR;
As it doesn't end, I don't have the real execution plan.
https://www.brentozar.com/pastetheplan/?id=B1x_w-QeK
Does anyone have any tips to improve runtime?