分享:《SQLSERVER2005技术内幕——T-SQL》实例!该怎么处理
分享:《SQLSERVER2005技术内幕——T-SQL》实例!!!!
本屌丝刚刚做了个实验吓尿了,因此,不明白为什么@左其盛老师说他的比@周强老师快:结果如下:
1.循环,楼上(benbenLY)屌丝的代码:(做了点修改)
DECLARE @i INT
set @i=1
WHILE @i<8000
BEGIN
INSERT INTO Nums SELECT @i
SET @i=@i+1
END
执行结果:
--------------------------------
2.@左老师代码
(见楼上)
执行结果:
--------------------------------
3.@周强老师代码
(见楼上)
执行结果:
-----------------------------------
这其中的差距还是蛮大的,我看到的结果是:@周强老师的速度是最快的,循环当然必须是最慢的,可是,在博客中看到@左老师与@周老师的互动,@左老师说通过验证,他的是最快的。有点疑惑!!!
------解决方案--------------------
收了,多谢,呵呵。。。
------解决方案--------------------
算法. 学习....
------解决方案--------------------
上面这个算法效率却是很高
------解决方案--------------------
膜拜
------解决方案--------------------
太高深了。
------解决方案--------------------
不错,支持一下
效率上估计比这个要好很多。
- SQL code
快速生成一个数据表,只有一列,这一列的值从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
执行结果:
--------------------------------
2.@左老师代码
(见楼上)
执行结果:
--------------------------------
3.@周强老师代码
(见楼上)
执行结果:
-----------------------------------
这其中的差距还是蛮大的,我看到的结果是:@周强老师的速度是最快的,循环当然必须是最慢的,可是,在博客中看到@左老师与@周老师的互动,@左老师说通过验证,他的是最快的。有点疑惑!!!
------解决方案--------------------
收了,多谢,呵呵。。。
------解决方案--------------------
算法. 学习....
------解决方案--------------------
上面这个算法效率却是很高
------解决方案--------------------
膜拜
------解决方案--------------------
太高深了。
------解决方案--------------------
不错,支持一下
效率上估计比这个要好很多。
- SQL code
insert into Nums select top 8000 row_number() over (order by (select 1)) from sysobjects,syscolumns
------解决方案--------------------
------解决方案--------------------
感谢分享,算法是学习了~;
可是实际效率没有那么好吧?
感觉没有下面的语句快,估计是因为上面代码中有计算的缘故,也或者是我的理解有误..
- SQL code
DECLARE @i INT =1 WHILE @i<8000 BEGIN INSERT INTO Nums SELECT @i SET @i=@i+1 END
------解决方案--------------------
------解决方案--------------------