mssql sqlserver select set赋值区别


摘要:
今天在群里面讨论时,被人问起是select性能好,还是set性能好?
下文将阐述一些自己对select set关键字性能的观点


select 、set 关键字功能区别:
select 目的在于返回数据,select 一次可对多个变量进行赋值操作
set 的功能将值分配给局部变量
—————————————
例:

declare @a int,@b int,@c int
 SET @a = 88;
SET @b = 99;
SET @c = 100;
-------------------------------------
SELECT  @a = 88,@b = 99,@c = 100

从以上的代码,我们可以看出,在循环赋值时,select的性能比set要好,因为select只需运行一次。
SET对变量进行赋值时符合ANSI标准;
———————————————
如果从查询分配,SET只能分配一个标量值。如果查询返回多个值/行,
则SET将引发错误。SELECT会将其中一个值赋给变量并隐藏返回多个值的事实。
当从查询中分配没有返回值时,SET将分配NULL,其中SELECT不会完全保留该变量不变。