CASE и несколько запросов UPDATE для больших наборов данных — производительность

Какой вариант для повышения производительности будет лучше для больших наборов данных, подлежащих обновлению?

Использование оператора CASE или отдельных запросов на обновление?

Пример CASE:

UPDATE tbl_name SET field_name = 
CASE
    WHEN condition_1 THEN 'Blah'
    WHEN condition_2 THEN 'Foo'
    WHEN condition_x THEN 123
    ELSE 'bar'
END AS value

Пример отдельного запроса:

UPDATE tbl_name SET field_name = 'Blah' WHERE field_name = condition_1
UPDATE tbl_name SET field_name = 'Foo' WHERE field_name = condition_2
UPDATE tbl_name SET field_name = 123 WHERE field_name = condition_x
UPDATE tbl_name SET field_name = 'bar' WHERE field_name = condition_y

ПРИМЕЧАНИЕ. Около 300,000 записей будут обновлены, а оператор CASE будет иметь около 10 000 условий WHEN. При использовании отдельных запросов также около 10 000

12
задан Phill Pafford 26 March 2012 в 15:38
поделиться