Mehrer Updates in einem Query? [SQL]

PostmanX

Mitglied
Hi

ich hab ein Projekt, was sehr viel SQL leistung zeiht. Jetzt baue ich gerade alls ein wenig um. Jetzt hab ich gerade ein Problem. Momentan wird in einer Schleife ein MYSQL query ausgeführt. In der ein Wert wert geändert wird von einer ID, und das halt 25 mal.Gibt es dafür ne spezielle Syntax, der schneller arbeitet? Und wo ich den Befehl in einem String schreiben kann und nach der Schleiße das MYSQL query starten kann?

Mir fällt da noch was ein, ich hab 2 Insert befehle die möchte ich gerade in einem Query abarbeiten, doch wenn ich die mit ; trenne sagt er mir das das ein syntax fehler sein, doch bei PHPMYADMIN gehts.

Ich hoffe einer kann mir da helfen. Vllt hat jemand ja noch paar performance tricks

Danke
 
Moin,

Wie genau ist denn das zu verstehen:
In der ein Wert wert geändert wird von einer ID, und das halt 25 mal.

Hast du 25 Datensätze mit verschiedenen IDs, in denen du identische Änderungen vornehmen willst?

Falls ja, benutze in der where-Klausel statt eines booleschen Vergleiches der einzelnen ID ein IN()...da kannst du das ID-Feld gegen eine Liste von IDs prüfen und alles mit 1 Query Updaten.
 
Wenn es unterschiedliche Werte sind, auf die geändert werden soll, wirst du um die 25 Queries nicht herumkommen :(

Inwieweit es da noch Möglichkeiten gibt, etwas zu Optimieren, lässt sich ohne weitere Details nicht sagen.

Als Anleitung bietet sich das MySQL-Handbuch an, gibts hier zum Download: http://dev.mysql.com/doc/
 
Die offizelle Doku finde ich Persöhnlich ziemlich gut:
http://dev.mysql.com/doc/refman/5.1/en/update.html

Aber es ist mit PHP nicht möglich mehrere Querys mit ; zu trennen, dies wurde soweit ich mich errinere aus Sicherheitsgründen deaktiviert. PhpMyAdmin arbeitet hier mit explode und sendet alle befehle einzeln ab.

Die einzige möglichkeit die du hast mehrere Befehle gleichzeitig abarbeiten zu lassen sind hier wohl auto commit zu deaktivieren aller updates zu senden und dann das commit hinterher.
http://dev.mysql.com/doc/refman/5.1/en/commit.html

Ob dir das geschwindigkeitsmäßig etwas bringt wage ich aber zu beweifeln. Gutmöglich das die Optimierung anderen stellen sinnvoller ist per Normalisierung oder Indizes.
 
Zurück