SQL快速生成连续整数 [数据库教程]

database

很多时候需要用到连续的id进行数据对比,如判断是否连续等问题。那么,生成连续整数的方式有多种,首先容易想到的是逐步循环,如果想生成2kw条记录,则需要循环2kw次进行插入,那么有没有其他方式呢,效率相对于逐步加一有多少提升呢。

首先创建一张存放记录的表,插入1条记录。

CREATETABLE dbo.Nums(n INT);

INSERTINTO dbo.Nums VALUES(1);

通常容易想到的是循环插入,每次插入1条,插入20W次,大约耗时10几分钟。。。

按照指数级插入,20W数据只需要插入18次,1s即可完成。

DECLARE@maxASINT, @rcASINT;

SET@max=200000; --数据总数

SET@rc=1;    --插入次数

WHILE@rc<=@max

BEGIN

INSERTINTO dbo.Nums SELECT n +@rcFROM 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快速生成连续整数

以上是 SQL快速生成连续整数 [数据库教程] 的全部内容, 来源链接: utcz.com/z/534915.html

回到顶部