Tannock.net 1 min read

A cool SQL thing I just learned

So let’s say you want to quickly populate a table with data. Until now, I’ve always done something like:

[loop from 1 to 1000] INSERT INTO TABLE (columnA, columnB, columnC) VALUES (columnA, columnB, columnC) [/loop]

This happens a lot when I’m updating cross-table relationships, for, say, group-membership. However, I’ve learned I can do this:

INSERT INTO TABLE (columnA, columnB, columnC) (SELECT columnA, columnB, columnC FROM TABLE_SOURCE WHERE ...)

Where, the ’…’ is the criteria to select from the source table. I’ve no idea if this is a best practice or not, but it sure is fast!

It changed an insert of 1700 rows from being about 2100 MS to being 21MS.