Should be a pretty straight forward question. Can I add an INDEX to a Common Table Expression (CTE)?
I have had the same requirement. Indexes can not be added to a CTE. However, in the CTE select adding an ORDER BY clause on the joined fields reduced the execution time from 20 minutes or more to under 10 seconds.
(You need to also ADD SELECT TOP 100 PERCENT to allow an ORDER BY in a CTE select.)
[edit to add paraphrased quote from a comment below]:
If you have DISTINCT in the CTE then TOP 100 PERCENT doesn't work. This cheater method is always available: without needing TOP at all in the select, alter the ORDER BY statement to read:
ORDER BY [Blah] OFFSET 0 ROWS