以下两个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]
);
答案 0 :(得分:0)
别名对性能没有影响
尽管
,他们可以说明了可读性和可维护性答案 1 :(得分:0)
别名主要用于提高可读性或命名计算列。它对查询的性能没有任何影响