1. 程式人生 > 實用技巧 >SQL快速生成連續整數

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