当前位置:Gxlcms > 数据库问题 > SQL快速生成连续整数

SQL快速生成连续整数

时间:2021-07-01 10:21:17 帮助过:5人阅读

TABLE dbo.Nums(n INT); INSERT INTO dbo.Nums VALUES(1);

通常容易想到的是循环插入,每次插入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   

人气教程排行