Mysql
 sql >> Database >  >> RDS >> Mysql

È possibile aggiornare più righe contemporaneamente utilizzando Zend_Db_Table?

Ciò che chiedi spesso non viene fatto, poiché di solito useresti update() per impostare molti record in modo che abbiano gli stessi valori o per impostare un record in modo che abbia molti valori diversi.

Un modo per aggirare questo è l'aggregazione degli aggiornamenti, quindi usando il tuo array ottieni tutti gli ID dove l'anno è il 2011, quindi esegui questo:

 $where = array();

 // This where should contain all the ids that need the year set to 2011
 // E.g.
 $where[] = array("id" => 3);

 $db->update("table_name", array("year" => 2011), $where);

In questo modo si ridurrà il numero di query supponendo che tu abbia molte righe con lo stesso anno. La documentazione per questo è qui .

Oppure potresti usare un metodo come questo

Modifica dopo la risposta OP

La natura stessa del problema significa che non può essere risolto in modo efficace.

Stai chiedendo un modo per aggiornare 3.700 righe di dati con insiemi di dati molto diversi. Se gli insiemi di dati sono diversi, non esiste alcun modello che puoi sfruttare per renderlo efficiente. Trovare schemi, come righe con lo stesso anno, e usarli a proprio vantaggio aumenterà la velocità della query, ma richiederà un po' di impegno cerebrale sotto forma di mashing di array come notato da regilero.