t-sql --- псевдонимы таблиц при объединении в операторы --- Какой из этих двух лучше и почему?
Единственное отличие двух следующих операторов 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 ответа
Псевдонимы не имеют никакого значения для производительности
Они спорные имеют значение для удобочитаемости и ремонтопригодности, хотя
Псевдонимы в основном используются для повышения читабельности или для именования вычисляемого столбца. Это не влияет на производительность запроса.