SQL快速生成連續整數

2022-03-02 19:58:27 字數 959 閱讀 3775

很多時候需要用到連續的id進行資料對比,如判斷是否連續等問題。那麼,生成連續整數的方式有多種,首先容易想到的是逐步迴圈,如果想生成2kw條記錄,則需要迴圈2kw次進行插入,那麼有沒有其他方式呢,效率相對於逐步加一有多少提公升呢。

首先建立一張存放記錄的表,插入1條記錄。

create

table dbo.nums(n int

);insert

into dbo.nums values(1);

通常容易想到的是迴圈插入,每次插入1條,插入20w次,大約耗時10幾分鐘。。。

按照指數級插入,20w資料只需要插入18次,1s即可完成。

declare

@max

asint, @rc

asint

;set

@max

=200000

; --資料總數

set@rc=1

;    --插入次數

while

@rc<=

@max

begin

insert

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

連續正整數之和

題目描述 乙個正整數有可能可以被表示為n n 2 個連續正整數之和,如 15 1 2 3 4 5 15 4 5 6 15 7 8 請編寫程式,根據輸入的任何乙個正整數,找出符合這種要求的所有連續正整數序列。輸入資料 乙個正整數,以命令列引數的形式提供給程式。輸出資料 在標準輸出上列印出符合題目描述的...

連續正整數問題

題目描述 乙個正整數有可能可以被表示為 n n 2 個連續正整數之和,如 15 1 2 3 4 5 15 4 5 6 15 7 8 請編寫程式,根據輸入的任何乙個正整數,找出符合這種要求的所有連續正整數序列。輸入資料 乙個正整數,以命令列引數的形式提供給程式。輸出資料 在標準輸出上列印出符合題目描述...

程式設計題 連續整數

牛牛的好朋友羊羊在紙上寫了n 1個整數,羊羊接著抹除掉了乙個整數,給牛牛猜他抹除掉的數字是什麼。牛牛知道羊羊寫的整數神排序之後是一串連續的正整數,牛牛現在要猜出所有可能是抹除掉的整數。例如 10 7 12 8 11 那麼抹除掉的整數只可能是9 5 6 7 8 那麼抹除掉的整數可能是4也可能是9 輸入...