1) Partition By 句と Order By 句の両方にいくつかのフィールドがあります。それぞれ (sma.FastPer、sma.SlowPer) に対して 1 つの値しかないため、これは意味がありません。ウィンドウ関数の Order By 部分からこれらのフィールドを安全に削除できます。
2) 「initialSmas i join initialSmas」で適切なパフォーマンスのインデックスが既にあり、(initialSmas.Symbol、initialSmas.Period、initialSmas.TradeDate) のインデックスが既にあると仮定すると、できる最善の方法は、smaComparisonsByPer を(sma.Symbol、sma.FastPer、sma.SlowPer、sma.TradeDate) にインデックスを作成できる一時テーブル