WITH using INDEX hint in Oracle
No, I don't think defining an index for a common table expression is possible. 

You can experiment with the materialize hint, but I don't think you'll get anything faster than the solution with (indexed) temporary tables.