Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Ist es möglich, mehrere Zeilen gleichzeitig mit Zend_Db_Table zu aktualisieren?

Was Sie fragen, wird oft nicht erledigt, da Sie normalerweise update() verwenden würden entweder viele Datensätze auf die gleichen Werte setzen oder einen Datensatz auf viele unterschiedliche Werte setzen.

Eine Möglichkeit, dies zu umgehen, besteht darin, die Updates zu aggregieren. Verwenden Sie also Ihr Array, um alle IDs mit dem Jahr 2011 abzurufen, und führen Sie dann Folgendes aus:

 $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);

Dadurch wird die Anzahl der Abfragen reduziert, vorausgesetzt, Sie haben viele Zeilen mit demselben Jahr. Die Dokumentation dazu ist hier .

Oder Sie könnten eine Methode verwenden so

Nach OP-Antwort bearbeiten

Die Natur des Problems bedeutet, dass es nicht effizient gelöst werden kann.

Sie fragen nach einer Möglichkeit, 3.700 Datenzeilen mit sehr unterschiedlichen Datensätzen zu aktualisieren. Wenn die Datensätze unterschiedlich sind, gibt es kein Muster, das Sie ausnutzen können, um dies effizient zu gestalten. Das Finden von Mustern, wie Zeilen mit demselben Jahr, und deren Verwendung zu Ihrem Vorteil erhöht die Geschwindigkeit der Abfrage, erfordert jedoch eine gewisse Gehirnleistung in Form von Array-Mashing wie von regilero angemerkt.