1) Sie haben einige Felder sowohl in der Partition By- als auch in der Order By-Klausel. Das macht keinen Sinn, da Sie jeweils nur einen Wert haben (sma.FastPer, sma.SlowPer). Sie können diese Felder sicher aus dem Teil Sortieren nach der Fensterfunktion entfernen.
2) Angenommen, Sie haben bereits Indizes für eine angemessene Leistung in "initialSmas i join initialSmas" und Sie haben bereits einen Index für (initialSmas.Symbol, initialSmas.Period, initialSmas.TradeDate), das Beste, was Sie tun können, ist, smaComparisonsByPer in a zu kopieren temporäre Tabelle, in der Sie einen Index erstellen können (sma.Symbol, sma.FastPer, sma.SlowPer, sma.TradeDate)