C# 为什么选择比Set语句快
我做了两个基本测试 1-C# 为什么选择比Set语句快,c#,.net,sql,sql-server,C#,.net,Sql,Sql Server,我做了两个基本测试 1- Create Procedure [dbo].[SetLoop] As Begin declare @counter int = 0 ,@a int,@b int,@c int,@d int,@e int While @counter < 1000000 Begin set @a=1 set @b=2 set @c=3 set @d=4 set @e=5
Create Procedure [dbo].[SetLoop]
As Begin
declare @counter int = 0 ,@a int,@b int,@c int,@d int,@e int
While @counter < 1000000
Begin
set @a=1
set @b=2
set @c=3
set @d=4
set @e=5
set @counter = @counter + 1
End
End
While @counter < 1000000
Begin
select @a=1
select @b=2
select @c=3
select @d=4
select @e=5
select @counter = @counter + 1
End
而@counter<1000000
开始
设置@a=1
设置@b=2
设置为@c=3
设置@d=4
设置@e=5
设置@counter=@counter+1
终点
结果 setAverage : 2418.44 selectAverage : 1037.52 setAverage : 2513.8 selectAverage : 1025.98 setAverage : 2496.52 selectAverage : 996.36 setAverage : 2518.58 selectAverage : 2504.44 setAverage : 2474.5 selectAverage : 2529.48 setAverage : 2511.22 selectAverage : 2514.04 平均值:2518.58 selectAverage:2504.44 平均值:2474.5 selectAverage:2529.48 平均值:2511.22 selectAverage:2514.04 结果意味着它们是相同的 这意味着,如果您需要设置一个变量,您将来更愿意使用
Select
cuz,如果
如果要设置另一个,只需,将添加@w=3
,但
如果要设置多个变量,则需要使用选择
它更容易编写,执行速度更快
但是我想知道为什么在第一次测试中Select
比Set
快?不是(至少在当前的示例中是这样),循环的每个迭代都要运行6个Set语句和一个Select语句,因此,我希望Select会更快
我建议大家一个一个地比较
CREATE Procedure [dbo].[SelectLoop]
As Begin
declare @counter int = 0
While @counter < 1000000
Begin
select @counter = @counter + 1
End
End
CREATE Procedure [dbo].[SetLoop]
As Begin
declare @counter int = 0
While @counter < 1000000
Begin
set @counter = @counter + 1
End
End
创建过程[dbo]。[SelectLoop]
作为开始
声明@counter int=0
而@counter<1000000
开始
选择@counter=@counter+1
终点
终点
创建过程[dbo].[SetLoop]
作为开始
声明@counter int=0
而@counter<1000000
开始
设置@counter=@counter+1
终点
终点
这将更准确地指示是否存在差异。我建议运行类似的测试,但仅针对一个变量,这样循环中只有一个select
和一个set
语句。好的,我会这样做并更新问题您仍在执行两个set操作,与单一选择相比。
While @counter < 1000000
Begin
set @a=1
set @b=2
set @c=3
set @d=4
set @e=5
set @counter = @counter + 1
End
setAverage : 2518.58
selectAverage : 2504.44
setAverage : 2474.5
selectAverage : 2529.48
setAverage : 2511.22
selectAverage : 2514.04
CREATE Procedure [dbo].[SelectLoop]
As Begin
declare @counter int = 0
While @counter < 1000000
Begin
select @counter = @counter + 1
End
End
CREATE Procedure [dbo].[SetLoop]
As Begin
declare @counter int = 0
While @counter < 1000000
Begin
set @counter = @counter + 1
End
End