I’m currently in a situation where I’m building a script that I know will need to insert multiple rows. I’m doing this in Perl, so in terms of parameterization, it’s much easier to insert each row individually. In terms of speed, I’m guessing running just one insert statement will be faster (although latency will be relatively low as I’m quite close to the database itself). I’m thinking the number of rows per run of the script will be about 20-40 on average. That said, what would be the approximate performance differences between running just 1 INSERT INTO statement v.s. running one for each row? Note: The server is running SQL 2008.
[EDIT]Since there seems to be a lot of confusion, I’d like to clarify that what I’m really asking for is the theory behind how a multi-row insert is handled by SQL Server 2008. Does it essentially just convert it internally into a bunch of individual insert statements and run those over one connection, or does it do something more intelligent?
Yes, I know I can run timed loops. No, that’s not what I’m asking for. [/EDIT]
Combining multiple inserts into one command is always going to execute much more quickly than executing separate inserts. The reasons are: