• If the temp table is ultimately selected from, you could alternatively create a specific reporting table which is not temporary and apply suitable indices there.

    This offers the added benefit of persisting the data for subsequent selects.

    Further, you can split your stored procedure into clear/repopulate reporting table, and select data from reporting table - benefits from this this may depend on how often the underlying data may or may not need to change.