t-sql --- Table aliases in merge into statements --- 这两个哪个更好,为什么?
t-sql --- Table aliases in merge into statements --- Which of these two is better and why?
以下两个 MERGE 语句之间的唯一区别是,在第一个语句中插入值时我省略了 Table 别名,而在第二个语句中包含了它。
我认为由于 MERGE INTO 和 USING 语句定义了源表和目标表,默认情况下将使用源中的值插入到目标中,因此没有理由使用别名。
哪个更好,为什么?任何性能差异?...我想我需要了解查询优化器的工作原理)
没有在 VALUES 中明确使用 Table 别名:
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 中显式使用 Table 别名:
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]
);
别名对性能没有影响
虽然可以说它们对可读性和可维护性有影响
别名主要用于增加可读性或命名计算列。它对查询的性能没有任何影响
以下两个 MERGE 语句之间的唯一区别是,在第一个语句中插入值时我省略了 Table 别名,而在第二个语句中包含了它。
我认为由于 MERGE INTO 和 USING 语句定义了源表和目标表,默认情况下将使用源中的值插入到目标中,因此没有理由使用别名。
哪个更好,为什么?任何性能差异?...我想我需要了解查询优化器的工作原理)
没有在 VALUES 中明确使用 Table 别名:
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 中显式使用 Table 别名:
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]
);
别名对性能没有影响
虽然可以说它们对可读性和可维护性有影响
别名主要用于增加可读性或命名计算列。它对查询的性能没有任何影响