-
They do different things. Use
INSERT
when the table exists. UseSELECT INTO
when it does not. -
Yes.
INSERT
with no table hints is normally logged.SELECT INTO
is minimally logged assuming proper trace flags are set. -
In my experience
SELECT INTO
is most commonly used with intermediate data sets, like#temp
tables, or to copy out an entire table like for a backup.INSERT INTO
is used when you insert into an existing table with a known structure.
EDIT
To address your edit, they do different things. If you are making a table and want to define the structure use CREATE TABLE
and INSERT
. Example of an issue that can be created: You have a small table with a varchar field. The largest string in your table now is 12 bytes. Your real data set will need up to 200 bytes. If you do SELECT INTO
from your small table to make a new one, the later INSERT
will fail with a truncation error because your fields are too small.