使用 SET 或 SELECT 填充变量更好吗?

Gad*_*ski 8 performance sql-server-2008 sql-server query-performance

将值设置为变量的更好方法是什么(关于性能)?

  1. 通过SET命令:

    DECLARE @VarString nvarchar(max);
    SET @VarString = 'john doe';
    SELECT @VarString;
    
    Run Code Online (Sandbox Code Playgroud)
  2. 通过SELECT命令:

    DECLARE @VarString nvarchar(max);
    SELECT @VarString = 'john doe';
    SELECT @VarString;
    
    Run Code Online (Sandbox Code Playgroud)

Nic*_*mas 8

不要严格选择一个或另一个性能。

根据您的风格和开发需求选择适合您的风格和开发需求,正如SELECT和之间的这种出色比较SET的结论中所建议的(添加了强调和次要格式):

最佳实践建议不要坚持一种方法。根据情况,您可能想要同时使用两者SETSELECT.

以下是使用的几个场景SET

  • 如果您需要直接为变量分配单个值并且不涉及查询来获取值
  • 预期为 NULL 分配(NULL在结果集中返回)
  • 任何计划的迁移都应遵循标准
  • 非标量结果是预期的,需要处理

SELECT在以下几种情况下使用高效灵活:

  • 通过直接赋值来填充多个变量
  • 多个变量由单个源(表、视图)填充
  • 减少分配多个变量的编码
  • 如果您需要获取@@ROWCOUNT@ERROR执行最后一条语句,请使用此选项