Jonny 5: Mysql multiquery freimachen

Beitrag lesen

// Insert all the Data via multi query
$Query = implode(";",$Query);
$this->Connect->multi_query($Query);
          if($this->Connect->more_results()) {
     while($this->Connect->next_result());
}

Nur will ich nach wie vor wissen WIESO man das bitte machen muss, ich habe noch nicht wirklich verstanden wieso dieser Hickhack nötig ist. Ausserdem finde ich es komisch, dass in das if() noch ein while() reinmuss! Ohne das while klappt es nämlich nicht. Kann mir das jemand einmal bitte für dumme erklären?

Weil es so im manual steht: mysqli.multi-query. (Siehe Beispiel) Warum? Commands out of sync.

Und ne andere Frage diesbezüglich: Ich habe ca. 50 einzelne Update Querys zu einer $this->Connect->multi_query($Query); zusammengefasst. Ist das nun ein signifikanter Geschwindigkeitszuwachs?

Es kommt darauf an. Wennst einen entfernten DB-Server hast, kann die Kommunikation sonst erheblich länger dauern. Selbst auf dem selben Server kann meiner Erfahrung nach deutlich Zeit durch die Verwendung der Multi-Queries gespart werden, da das Script nicht laufend Ping-Pong mit dem DB-Server spielen muss. Einfach benchmarken.

Oder kann man das irgendwie anders noch beschleunigen?

Man kann soviel tunen, dass man nur damit seine Zeit verbrignen kann *g* Servervariablen, Indexe richtig setzen,...

Viele Grüße,
Jonny 5