2011-01-19 5 views
0

Каков наилучший способ для этого SQL?Что является лучшим решением для этого ОБНОВЛЕНИЯ

)

update tableName set 
FieldA = (if FieldA = 1301 then null else FieldA endif), 
FieldB = (if FieldB = 1301 then null else FieldB endif) 
where Id = 707; 

или

B)

update tableName set FieldA = null where Id= 707 and FieldA = 1301; 
update tableName set FieldB = null where Id= 707 and FieldB = 1301; 

В модели "А" У меня есть только один SQL, которая работает и решает проблему, и модель "B" I имеют два SQL, которые делают то же, что и модель «A», но более читабельны.

Что было бы наиболее подходящей модель для использования?

ответ

1

Я полагаю, что решение лучше, потому что:

1 менее логично IO - лучше производительность

2 меньше программного кода, меньше ошибок

3 легкость для поддержки и

4 это обновление довольно читаемо

+0

Интересно, что первый вариант A) не мог вызвать триггеры обновления, даже если FieldA <> 1301; или даже обновление ввода-вывода. Я имею в виду, будет ли двигатель знать, что 'update set FieldA = FieldA' будет NOP? – pascal

+0

Я думаю, что сервер выполняет операции ввода-вывода в этом случае, но это быстрое обновление inplace. – kolchanov

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