SQL快速生成连续整数
短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
很多时候需要用到连续的id进行数据对比,如判断是否连续等问题。那么,生成连续整数的方式有多种,首先容易想到的是逐步循环,如果想生成2kw条记录,则需要循环2kw次进行插入,那么有没有其他方式呢,效率相对于逐步加一有多少提升呢。
首先创建一张存放记录的表,插入1条记录。
CREATE 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快速生成连续整数
原文地址:https://www.cnblogs.com/xiaohuhu/p/13391454.html
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341