title: Creating a table using explicit create table statement versus select into
body: <p>Are there any performance differences between using an explicit create table statement and loading data versus selecting into. This example just shows 2 columns, but the question is geared towards using very large tables. The example below also uses temporary tables, though I'm wondering the effects upon using regular tables as well. I think they would be the same regardless of table type though.</p>
  
  <p>Temp table scenario:</p>
  
  <pre><code>--- Explicitly creating temp table first and then loading.
  create table #test1 (id int, name varchar(100))
  insert into #test1 (id, name) select id, name from #bigTable
  
  --- Creating temp table by selecting into.
  select id,name into #test2 from #bigTable
  </code></pre>
  
  <p>or regular tables:</p>
  
  <pre><code>--- Explicitly creating table first and then loading.
  create table test1 (id int, name varchar(100))
  insert into test1 (id, name) select id, name from #bigTable
  
  --- Creating table by selecting into.
  select id,name into test2 from bigTable
  </code></pre>
  
  <p>What are everyone's thoughts on this? I think that explicitly creating the table and loading must have better performance than selecting into as select into must evaluate the expressions within the statement in order to create a table.</p>
  
  <p>Our organization usually creates temp tables explicitly as a standard practice, and we're wondering what everything thinks is actually the best practice.</p>
  
  <p><a href="http://msdn.microsoft.com/en-us/library/ms188029.aspx">http://msdn.microsoft.com/en-us/library/ms188029.aspx</a></p>