SQL Server e gli insert multipli
Segnalo una interessante novità del nuovo SQL Server 2008 che uscirà il prossimo anno: la possibilità di fare più insert con una sola istruzione.
Esempio che dice più di mille parole:
INSERT INTO tab (campoA, campoB, campoC)
VALUES (<val1>, <val2>, <val3>),
(<val4>, <val5>, <val6>),
(<val7>, <val8>, <val9>)
Per inciso, non vorrei sbagliarmi, ma mi pare che questa sintassi sia già supportata da MySQL, che come in diverse circostanze (vedi caso LIMIT per il paging lato server) si dimostra più comodo nella sintassi.
In realtà una cosa simile si può fare anche con l’attuale versione di SQL Server, basta sfruttare UNION ALL.
Anche in questo caso un esempio veloce:
INSERT INTO tab (campoA, campoB, campoC)
SELECT <val1>, <val2>, <val3>
UNION ALL
SELECT <val4>, <val5>, <val6>
UNION ALL
SELECT <val7>, <val8>, <val9>
Anche qui parlo senza aver fatto molti test, ma almeno a naso dovrebbe essere più performante, portato ovviamente su grandi dimensioni, che non fare tante singole insert.
Precisazione utile. Differenza tra UNION e UNION ALL: la prima elimina i doppioni (in pratica fa una distinct), la seconda no.










