快速生成一个数据表,只有一列,这一列的值从1到8000,
sql只需要执行14次
(第一条sql插入数据1,后面12次把2的12次方4096以内的数据插入,后面剩下的8000-4096个数字一次生成)
而不是8000次:
语句如下:
----------------------------------------------------------
SET NOCOUNT ON;
USE tempdb;
GO
IF OBJECTID(“dbo.Nums“) IS NOT NULL
DROP TABLE dbo.Nums;
GO
CREATE 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 <= @max
BEGIN
INSERT INTO dbo.Nums SELECT n + @rc FROM dbo.Nums;
SET @rc = @rc * 2;
END
INSERT 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
执行结果:
--------------------------------