USE [TEMPDB] SET NOCOUNT ON GO --Prova 0 (poco seria, solo per divertirsi) --Questo forse è il modo che richiede meno testo per fare un milione di insert --(soprattutto se si tolgono il begin e il commit) CREATE TABLE NUMBERS(NUMBER INT IDENTITY(0,1), A CHAR(1) NULL) BEGIN TRANSACTION GO INSERT INTO NUMBERS (A) VALUES (NULL) GO 1000000 COMMIT TRANSACTION DROP TABLE NUMBERS --Fine prova 0 GO --Prova 1 CREATE TABLE NUMBERS(NUMBER INT) BEGIN TRANSACTION DECLARE @i INT SET @i=0 WHILE (@i<1000000) BEGIN INSERT INTO NUMBERS VALUES(@i) SET @i = @i + 1 END COMMIT TRANSACTION DROP TABLE NUMBERS GO --Prova 2 CREATE TABLE NUMBERS(NUMBER INT) CREATE TABLE DIGITS (DIGIT INT NOT NULL) INSERT INTO DIGITS VALUES (0) INSERT INTO DIGITS VALUES (1) INSERT INTO DIGITS VALUES (2) INSERT INTO DIGITS VALUES (3) INSERT INTO DIGITS VALUES (4) INSERT INTO DIGITS VALUES (5) INSERT INTO DIGITS VALUES (6) INSERT INTO DIGITS VALUES (7) INSERT INTO DIGITS VALUES (8) INSERT INTO DIGITS VALUES (9) INSERT INTO NUMBERS SELECT D1.DIGIT+D2.DIGIT*10+D3.DIGIT*100+D4.DIGIT*1000+D5.DIGIT*10000+D6.DIGIT*100000 AS NUMBER FROM DIGITS D1, DIGITS D2, DIGITS D3, DIGITS D4, DIGITS D5, DIGITS D6 DROP TABLE DIGITS DROP TABLE NUMBERS GO --Prova 3 CREATE TABLE DIGITS (DIGIT INT NOT NULL) INSERT INTO DIGITS VALUES (0) INSERT INTO DIGITS VALUES (1) INSERT INTO DIGITS VALUES (2) INSERT INTO DIGITS VALUES (3) INSERT INTO DIGITS VALUES (4) INSERT INTO DIGITS VALUES (5) INSERT INTO DIGITS VALUES (6) INSERT INTO DIGITS VALUES (7) INSERT INTO DIGITS VALUES (8) INSERT INTO DIGITS VALUES (9) SELECT D1.DIGIT+D2.DIGIT*10+D3.DIGIT*100+D4.DIGIT*1000+D5.DIGIT*10000+D6.DIGIT*100000 AS NUMBER INTO NUMBERS FROM DIGITS D1, DIGITS D2, DIGITS D3, DIGITS D4, DIGITS D5, DIGITS D6 DROP TABLE DIGITS DROP TABLE NUMBERS GO --Prova 4 CREATE TABLE DIGITS (DIGIT INT NOT NULL) INSERT INTO DIGITS VALUES (0) INSERT INTO DIGITS VALUES (1) INSERT INTO DIGITS VALUES (2) INSERT INTO DIGITS VALUES (3) INSERT INTO DIGITS VALUES (4) INSERT INTO DIGITS VALUES (5) INSERT INTO DIGITS VALUES (6) INSERT INTO DIGITS VALUES (7) INSERT INTO DIGITS VALUES (8) INSERT INTO DIGITS VALUES (9) SELECT IDENTITY(INT, 0, 1) AS NUMBER INTO NUMBERS FROM DIGITS D1, DIGITS D2, DIGITS D3, DIGITS D4, DIGITS D5, DIGITS D6 DROP TABLE DIGITS DROP TABLE NUMBERS GO --Prova 5 SELECT DIGIT INTO DIGITS FROM ( SELECT 0 AS DIGIT UNION ALL SELECT 1 AS DIGIT UNION ALL SELECT 2 AS DIGIT UNION ALL SELECT 3 AS DIGIT UNION ALL SELECT 4 AS DIGIT UNION ALL SELECT 5 AS DIGIT UNION ALL SELECT 6 AS DIGIT UNION ALL SELECT 7 AS DIGIT UNION ALL SELECT 8 AS DIGIT UNION ALL SELECT 9 AS DIGIT) A SELECT D1.DIGIT+D2.DIGIT*10+D3.DIGIT*100+D4.DIGIT*1000+D5.DIGIT*10000+D6.DIGIT*100000 AS NUMBER INTO NUMBERS FROM DIGITS D1, DIGITS D2, DIGITS D3, DIGITS D4, DIGITS D5, DIGITS D6 DROP TABLE DIGITS DROP TABLE NUMBERS GO --Prova 6 WITH DIGITS AS ( SELECT 0 AS DIGIT UNION ALL SELECT 1 AS DIGIT UNION ALL SELECT 2 AS DIGIT UNION ALL SELECT 3 AS DIGIT UNION ALL SELECT 4 AS DIGIT UNION ALL SELECT 5 AS DIGIT UNION ALL SELECT 6 AS DIGIT UNION ALL SELECT 7 AS DIGIT UNION ALL SELECT 8 AS DIGIT UNION ALL SELECT 9 AS DIGIT) SELECT D1.DIGIT+D2.DIGIT*10+D3.DIGIT*100+D4.DIGIT*1000+D5.DIGIT*10000+D6.DIGIT*100000 AS NUMBER INTO NUMBERS FROM DIGITS D1, DIGITS D2, DIGITS D3, DIGITS D4, DIGITS D5, DIGITS D6 DROP TABLE NUMBERS GO --Prova 7 WITH DIGITS AS ( SELECT 0 AS DIGIT UNION ALL SELECT 1 AS DIGIT UNION ALL SELECT 2 AS DIGIT UNION ALL SELECT 3 AS DIGIT UNION ALL SELECT 4 AS DIGIT UNION ALL SELECT 5 AS DIGIT UNION ALL SELECT 6 AS DIGIT UNION ALL SELECT 7 AS DIGIT UNION ALL SELECT 8 AS DIGIT UNION ALL SELECT 9 AS DIGIT) SELECT IDENTITY(INT,0,1) AS NUMBER INTO NUMBERS FROM DIGITS D1, DIGITS D2, DIGITS D3, DIGITS D4, DIGITS D5, DIGITS D6 DROP TABLE NUMBERS GO --Prova 8 WITH D1 AS ( SELECT 0 AS DIGIT UNION ALL SELECT 1 AS DIGIT UNION ALL SELECT 2 AS DIGIT UNION ALL SELECT 3 AS DIGIT UNION ALL SELECT 4 AS DIGIT UNION ALL SELECT 5 AS DIGIT UNION ALL SELECT 6 AS DIGIT UNION ALL SELECT 7 AS DIGIT UNION ALL SELECT 8 AS DIGIT UNION ALL SELECT 9 AS DIGIT), D2 AS ( SELECT 0 AS DIGIT UNION ALL SELECT 10 AS DIGIT UNION ALL SELECT 20 AS DIGIT UNION ALL SELECT 30 AS DIGIT UNION ALL SELECT 40 AS DIGIT UNION ALL SELECT 50 AS DIGIT UNION ALL SELECT 60 AS DIGIT UNION ALL SELECT 70 AS DIGIT UNION ALL SELECT 80 AS DIGIT UNION ALL SELECT 90 AS DIGIT), D3 AS ( SELECT 0 AS DIGIT UNION ALL SELECT 100 AS DIGIT UNION ALL SELECT 200 AS DIGIT UNION ALL SELECT 300 AS DIGIT UNION ALL SELECT 400 AS DIGIT UNION ALL SELECT 500 AS DIGIT UNION ALL SELECT 600 AS DIGIT UNION ALL SELECT 700 AS DIGIT UNION ALL SELECT 800 AS DIGIT UNION ALL SELECT 900 AS DIGIT), D4 AS ( SELECT 0 AS DIGIT UNION ALL SELECT 1000 AS DIGIT UNION ALL SELECT 2000 AS DIGIT UNION ALL SELECT 3000 AS DIGIT UNION ALL SELECT 4000 AS DIGIT UNION ALL SELECT 5000 AS DIGIT UNION ALL SELECT 6000 AS DIGIT UNION ALL SELECT 7000 AS DIGIT UNION ALL SELECT 8000 AS DIGIT UNION ALL SELECT 9000 AS DIGIT), D5 AS ( SELECT 0 AS DIGIT UNION ALL SELECT 10000 AS DIGIT UNION ALL SELECT 20000 AS DIGIT UNION ALL SELECT 30000 AS DIGIT UNION ALL SELECT 40000 AS DIGIT UNION ALL SELECT 50000 AS DIGIT UNION ALL SELECT 60000 AS DIGIT UNION ALL SELECT 70000 AS DIGIT UNION ALL SELECT 80000 AS DIGIT UNION ALL SELECT 90000 AS DIGIT), D6 AS ( SELECT 0 AS DIGIT UNION ALL SELECT 100000 AS DIGIT UNION ALL SELECT 200000 AS DIGIT UNION ALL SELECT 300000 AS DIGIT UNION ALL SELECT 400000 AS DIGIT UNION ALL SELECT 500000 AS DIGIT UNION ALL SELECT 600000 AS DIGIT UNION ALL SELECT 700000 AS DIGIT UNION ALL SELECT 800000 AS DIGIT UNION ALL SELECT 900000 AS DIGIT) SELECT D1.DIGIT+D2.DIGIT+D3.DIGIT+D4.DIGIT+D5.DIGIT+D6.DIGIT AS NUMBER INTO NUMBERS FROM D1, D2, D3, D4, D5, D6 DROP TABLE NUMBERS