• 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行。

  • 相关阅读:
    Petapoco 数据库操作类
    .net Cookie操作公共方法 CookieHelper
    .net 服务端缓存 Cache/CacheHelper
    Base64加密解密方法
    对多字段进行去重 ( Linq 方式 )
    BootStrap之 提示工具(Tooltip)插件
    bootstrap之弹出框
    Jquery 强大的表单验证操作
    强大的数据库工具 dbForge Studio ForMySql
    My操作小技巧
  • 原文地址:https://www.cnblogs.com/xiaohuhu/p/13391454.html
Copyright © 2020-2023  润新知