1) Имате някои полета както в клаузите Partition By, така и в Order By. Това няма смисъл, тъй като ще имате една и само една стойност за всеки (sma.FastPer, sma.SlowPer). Можете безопасно да премахнете тези полета от частта на прозореца за подреждане по.
2) Ако приемем, че вече имате индекси за адекватна производителност в „initialSmas i join initialSmas“ и че вече имате индекс за (initialSmas.Symbol, initialSmas.Period, initialSmas.TradeDate), най-доброто, което можете да направите, е да копирате smaComparisonsByPer в временна таблица, където можете да създадете индекс на (sma.Symbol, sma.FastPer, sma.SlowPer, sma.TradeDate)