sql server - SQL query to fast data generation -
i have created query generate data sql databases, generation of 1 gb data takes 45 minutes. how increase performance of data generation?
declare @rowcount int declare @rowstring varchar(10) declare @random int declare @upper int declare @lower int declare @insertdate datetime set @lower = -730 set @upper = -1 set @rowcount = 0 while @rowcount < 3000000 begin set @rowstring = cast(@rowcount varchar(10)) select @random = round(((@upper - @lower -1) * rand() + @lower), 0) set @insertdate = dateadd(dd, @random, getdate()) insert table_1 (q ,w ,e ,r ,t ,y) values (replicate('0', 10 - datalength(@rowstring)) + @rowstring , @insertdate ,dateadd(dd, 1, @insertdate) ,dateadd(dd, 2, @insertdate) ,dateadd(dd, 3, @insertdate) ,dateadd(dd, 4, @insertdate)) set @rowcount = @rowcount + 1 end
you may try following also:
;with seq ( select top (3000000) n = row_number() on (order @@spid) - 1 sys.all_columns c1, sys.all_columns c2 ) insert table_1 (q, w, e, r, t, y) select right('0000000000' + cast(n varchar(10)), 10) ,p.insertdate ,dateadd(dd, 1, p.insertdate) ,dateadd(dd, 2, p.insertdate) ,dateadd(dd, 3, p.insertdate) ,dateadd(dd, 4, p.insertdate) seq cross apply (select dateadd(dd, round(((@upper - @lower -1) * rand(checksum(newid())) + @lower), 0), getdate())) p(insertdate)
Comments
Post a Comment