I have a quite complex multi-join TSQL SELECT query that runs for about 8 seconds and returns about 300K records. Which is currently acceptable. But I need to reuse results of that query several times later, so I am inserting results of the query into a temp table. Table is created in advance with columns that match output of SELECT query. But as soon as I do INSERT INTO … SELECT – execution time more than doubles to over 20 seconds! Execution plans shows that 46% of the query cost goes to “Table Insert” and 38% to Table Spool (Eager Spool).
Any idea why this is happening and how to speed it up?
Thanks!
The “Why” of it hard to say, we’d need a lot more information. (though my SWAG would be that it has to do with logging…)
However, the solution, 9 times out of 10 is to use SELECT INTO to make your temp table.