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

Er det muligt at opdatere flere rækker ad gangen ved hjælp af Zend_Db_Table?

Det, du spørger om, bliver ikke ofte gjort, da du normalt ville bruge update() enten at indstille en masse poster til at have de samme værdier eller indstille en post til at have mange forskellige værdier.

En måde at undgå dette på er den samlede opdatering, så brug dit array til at få alle id'erne, hvor året er 2011, og kør derefter dette:

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

Hvis du gør dette, reduceres antallet af forespørgsler, forudsat at du har mange rækker med det samme år. Dokumentationen for dette er her .

Eller du kan bruge en metode som denne

Rediger efter OP-svar

Problemets natur betyder, at det ikke kan løses effektivt.

Du beder om en måde at opdatere 3.700 rækker af data med meget forskellige datasæt. Hvis datasættene er forskellige, er der ikke noget mønster, som du kan udnytte for at gøre dette effektivt. At finde mønstre, f.eks. rækker med det samme årstal, og bruge dem til din fordel vil øge hastigheden af ​​forespørgslen, men det vil kræve en vis hjerneenagement i form af array mashing som bemærket af regilero.



  1. Sådan opretter du indeks i SQL for at øge ydeevnen

  2. Oracle opret tabel som vælg med count max betingelse

  3. Retur eksisterer ikke post i tabellen

  4. TO_CHAR(datotid) Funktion i Oracle