Sulla Programmazione

Quattro chiacchere sulla programmazione e sulle bit-tecnologie con Fabrizio Cipriani

SQL: inserimento di record multipli con una singola query

Ecco cosa ho trovato cercando icome inserire più record in una tabella con una singola query SQL:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
USE YourDB 
GO 
INSERT INTO MyTable (FirstCol, SecondCol) 
  SELECT 'First' ,1 
  UNION ALL 
  SELECT 'Second' ,2 
  UNION ALL 
  SELECT 'Third' ,3 
  UNION ALL 
  SELECT 'Fourth' ,4 
  UNION ALL 
  SELECT 'Fifth' ,5 
GO

La dritta la trovate nel post di Pinal Dave:

SQL SERVER – Insert Multiple Records Using One Insert Statement – Use of UNION ALL

Dai test eseguiti dai lettori del blog di Pinal Dave, sembra che questo metodo arrivi ad essere fino a 30 volte più veloce del metodo classico con le multiple insert:

1
2
3
4
5
USE YourDB
GO
INSERT INTO MyTable  (FirstCol, SecondCol) VALUES ('First',1)
INSERT INTO MyTable  (FirstCol, SecondCol) VALUES ('Second',2)
etc..

Ma attenzione al numero di record: nei commenti al post molti utenti riportano un forte abbassamento delle performance e problemi di allocazione della memoria sullo stack in caso di quantità molto grandi (sopra le 10-15k unità).

Comments