时间:2021-07-01 10:21:17 帮助过:5人阅读
通常容易想到的是循环插入,每次插入1条,插入20W次,大约耗时10几分钟。。。
按照指数级插入,20W数据只需要插入18次,1s即可完成。
DECLARE @max AS INT, @rc AS INT; SET @max = 200000; --数据总数 SET @rc = 1; --插入次数 WHILE @rc <= @max BEGIN INSERT INTO dbo.Nums SELECT n + @rc FROM dbo.Nums WHERE n+@rc<=@max; SET @rc = @rc * 2; END
具体逻辑理解如下:
第1次插入1条,表数据变为:1 ,2
第2次插入2条,表数据变为:1 , 2 ,3, 4
第3次插入4条,表数据变为:1 ,2 ,3 ,4 ,5 ,6 ,7 ,8
第4次插入8条,表数据变为:1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,...... ,16
......
第17次插入65536行,表数据变为:1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,...... ,131072
第18次插入剩余的68928行。
SQL快速生成连续整数
标签:ble col 生成 color 理解 div font select insert