2016-11-07 7 views
2

Я думаю, что запрос 1 более читабельен, чем запрос 2, но я хотел бы знать, есть ли разница между ними с точки зрения производительности?SQL Server Query - что лучше в производительности?

Запрос 1

UPDATE table_1 
SET col_1 = 
     CASE WHEN table_1.col_pk IS NULL THEN value1 
      ELSE value2 
     END 
FROM table_1 
LEFT JOIN table_2 ON table_1.col_pk = table_2.col_pk 

или

Запрос 2

UPDATE table_1 
SET col_1 = value1 
FROM table_1 
LEFT JOIN table_2 ON table_1.col_pk = table_2.col_pk 
WHERE table_1.col_pk IS NULL 

UPDATE table_1 
SET col_1 = value2 
FROM table_1 
INNER JOIN table_2 ON table_1.col_pk = table_2.col_pk 
+4

benchmark ........... –

+0

'CASE WHEN col_pk IS NULL', который из двух' col_pk'? – anatol

+0

oops sorry .. table_1.col_pk вместо этого. Благодарю. Я обновлю поток. –

ответ

3

Первый запрос будет, вероятно, имеет более высокую производительность, поскольку она требует только одного сканирования table_1 и table_2.

+0

Оценка. Btw, в случае установки значения? Запрос 1 будет устанавливать значение условно, поэтому он сначала проверит col_pk перед назначением правильного значения. –

+1

Да, но эта операция, как правило, меньше, чем сканирование и объединение таблиц. – mendosi

+0

Спасибо mendosi. У меня больше вопросов в голове, но затем позвольте мне создать другой поток, потому что это займет другую тему. Еще раз спасибо. –

Смежные вопросы