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 ответа

Псевдонимы не имеют никакого значения для производительности

Они спорные имеют значение для удобочитаемости и ремонтопригодности, хотя

Псевдонимы в основном используются для повышения читабельности или для именования вычисляемого столбца. Это не влияет на производительность запроса.

Другие вопросы по тегам