t-sql ---合并到语句中的表别名---这两个中的哪一个更好,为什么?

时间:2017-07-31 09:19:53

标签: sql sql-server tsql merge alias

以下两个MERGE语句之间的唯一区别是,当我在第一个中插入值时,我省略了表别名,并将其包含在第二个中。

我认为由于MERGE INTO和USING语句定义了源表和目标表,因此默认情况下是使用源中的值插入目标,因此没有理由使用别名。

哪个更好,为什么?任何性能差异?...我想我需要了解查询优化器的工作原理

在VALUES中没有明确使用表别名:

MERGE INTO TargetSchema.TargetTable AS T
USING SourceSchema.SourceSchema As S 
ON S.Id = T.Id
WHEN NOT MATCHED THEN
   INSERT(
       [Id]
      ,[Status]
      ,[Another Column]   
      )

   VALUES(
       [Id]
      ,[Status]
      ,[Another Column]
      );

在VALUES中明确使用表别名:

MERGE INTO TargetSchema.TargetTable AS T
USING SourceSchema.SourceSchema As S 
ON S.Id = T.Id
WHEN NOT MATCHED THEN
   INSERT(
       [Id]
      ,[Status]
      ,[Another Column]   
      )

   VALUES(
       [S].[Id]
      ,[S].[Status]
      ,[S].[Another Column]
      );

2 个答案:

答案 0 :(得分:0)

别名对性能没有影响

尽管

,他们可以说明了可读性和可维护性

答案 1 :(得分:0)

别名主要用于提高可读性或命名计算列。它对查询的性能没有任何影响