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行。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署