1) Du har några fält både i avsnitten Partition By och Order By. Det är inte vettigt eftersom du kommer att ha ett och bara ett värde för varje (sma.FastPer, sma.SlowPer). Du kan säkert ta bort dessa fält från Order By-delen av fönsterfunktionen.
2) Om du antar att du redan har index för adekvat prestanda i "initialSmas i join initialSmas" och att du redan har och index för (initialSmas.Symbol, initialSmas.Period, initialSmas.TradeDate) är det bästa du kan göra att kopiera smaComparisonsByPer till en tillfällig tabell där du kan skapa ett index på (sma.Symbol, sma.FastPer, sma.SlowPer, sma.TradeDate)