1) U hebt enkele velden in zowel de Partition By- als de Order By-clausules. Dat is niet logisch, aangezien je voor elk één en slechts één waarde hebt (sma.FastPer, sma.SlowPer). U kunt deze velden veilig verwijderen uit het Order By-gedeelte van de vensterfunctie.
2) Ervan uitgaande dat u al indexen hebt voor adequate prestaties in "initialSmas i join initialSmas" en dat u al indexen heeft voor (initialSmas.Symbol, initialSmas.Period, initialSmas.TradeDate), kunt u het beste smaComparisonsByPer kopiëren naar een tijdelijke tabel waar u een index op kunt maken (sma.Symbol, sma.FastPer, sma.SlowPer, sma.TradeDate)