快速生成一个数据表,只有一列,这一列的值从1到8000,sql只需要执行14次(第一条sql插入数据1,后面12次把2的12次方4096以内的数据插入,后面剩下的8000-4096个数字一次生成)而不是8000次:语句如下:----------------------------------------------------------SET NOCOUNT ON;USE tempdb;GOIF OBJECTID(“dbo.Nums“) IS NOT NULL DROP TABLE dbo.Nums;GOCREATE TABLE dbo.Nums(n INT NOT NULL PRIMARY KEY);DECLARE @max AS INT, @rc AS INT;SET @max = 8000;SET @rc = 1;INSERT INTO Nums VALUES(1);WHILE @rc * 2 <= @maxBEGIN INSERT INTO dbo.Nums SELECT n + @rc FROM dbo.Nums; SET @rc = @rc * 2;ENDINSERT INTO dbo.Nums SELECT n + @rc FROM dbo.Nums WHERE n + @rc <= @max;GO--------------------载自http://www.cnblogs.com/zuoqs/archive/2010/01/24/1655451.html,作者:左其盛
本屌丝刚刚做了个实验吓尿了,因此,不明白为什么@左其盛老师说他的比@周强老师快:结果如下:
1.循环,楼上(benbenLY)屌丝的代码:(做了点修改)
DECLARE @i INT set @i=1 WHILE @i<8000 BEGIN INSERT INTO Nums SELECT @i SET @i=@i+1 END 执行结果: --------------------------------