Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

INSERT lots of records using SQL Server 2008

I think i have cracked a way of generating the random numbers. But whats the best way in SQL server to loop this efficiently? I have the following SQL:

DECLARE @Random1 INT;
DECLARE @Random2 INT;
DECLARE @Random3 INT;
DECLARE @Random4 INT;
DECLARE @Random5 INT;
DECLARE @Random6 INT;

DECLARE @Upper INT;
DECLARE @Lower INT;

---- This will create a random number between 1 and 49
SET @Lower = 1 ---- The lowest random number
SET @Upper = 49 ---- The highest random number
SELECT @Random1 = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0)
SELECT @Random2 = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0)
SELECT @Random3 = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0)
SELECT @Random4 = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0)
SELECT @Random5 = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0)
SELECT @Random6 = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0)
--SELECT @Random;

INSERT INTO [lotto].[dbo].[CustomerSelections]
           ([draw_date]
           ,[val1]
           ,[val2]
           ,[val3]
           ,[val4]
           ,[val5]
           ,[val6])
     VALUES
           (
           '2013-07-05'
           ,@Random1
           ,@Random2
           ,@Random3
           ,@Random4
           ,@Random5
           ,@Random6 
           )

What is the best way to get SQL Server to run this SQL 100,000 times?

like image 918
PriceCheaperton Avatar asked Jan 28 '26 12:01

PriceCheaperton


1 Answers

Doing it all in one statement with no loops will be the most efficient way.

INSERT INTO [lotto].[dbo].[CustomerSelections]
           ([draw_date]
           ,[val1]
           ,[val2]
           ,[val3]
           ,[val4]
           ,[val5]
           ,[val6])
SELECT TOP (100000 )
           '2013-07-05',
           1 + ABS(CRYPT_GEN_RANDOM(8) % 49),
           1 + ABS(CRYPT_GEN_RANDOM(8) % 49),
           1 + ABS(CRYPT_GEN_RANDOM(8) % 49),
           1 + ABS(CRYPT_GEN_RANDOM(8) % 49),
           1 + ABS(CRYPT_GEN_RANDOM(8) % 49),
           1 + ABS(CRYPT_GEN_RANDOM(8) % 49)
FROM master..spt_values v1,
     master..spt_values v2
like image 108
Martin Smith Avatar answered Jan 31 '26 01:01

Martin Smith