There is no general answer. It depends on how the temporary table is used.
The temp table can reduce IO by caching strings created after a complex filter / join, which are used several times later in the package. Thus, the database can avoid getting the base tables several times when only a subset of records is required.
The temp table can increase IO by storing entries that are never used later in the query, or by taking up a lot of space in the kernel cache that could be better used by other data.
Creating a temporary table to use all its contents is one time slower than including a temporary query in the main query, because the query optimizer cannot see behind the temporary table, and it forces (possibly) extra spool of data instead of allowing it to stream from the source tables .
source share