• you could look at using the Optimise for first N rows hint. This will change the query plan so that the query can start returning data earlier, even though the whole query may take longer.

    You could also look at query tuning and indexes to see if you are improve the response speed of the query.

    How about not truncating, but inserting and updating: If only 3% of your data has changed, why rebuild it all

    Seeing as you are populating the table using a stored procedure rather than a view,

    You could always write the data to a temporary table and then truncate and insert to the target table. This is generally quite quick on the insert side.