Я должен выполнить запрос на обновление строк 800k и искать лучший способ сделать это. Все строки обновляются с теми же значениями, за исключением одного поля (D в моем примере). Это поле может быть 1 или 0. Я использую метод update() для Zend_Db. Думаю, около 3 методов, чтобы сделать это:Лучший способ сделать этот запрос UPDATE
Methode 1: обновить каждую строку, один за одним (с Еогеаспом).
Methode 2: Есть ли ПЧ в обновлении, чтобы установить значение поля
Methode 3: разделение строки на две группы (одна с полем = 1 и другими с полем = 0) и сделать два обновления (UPDATE ... WHERE id IN (...)), по одному для каждой группы.
запрос выглядит следующим образом:
$a_data = array(
'A' => foo,
'B' => 99,
'C' => 0,
'D' => (0 OR 1 ?)
);
$where['id IN (?)'] = $a_id;
$update = $this->_db->update($this->_name, $a_data, $where);
метод Witch может быть лучшим способом сделать это? Спасибо
FYI: обсуждение скорости PHP и MySQL http://stackoverflow.com/questions/13176469/php-vs-mysql-performance-if-functions-in-query – AgeDeO
В вашем примере кода ничего нет укажите, как вы решаете, какие строки будут установлены в 'D = 1' или' D = 0'. Это может помочь с решением. – RiggsFolly