Welches INSERT ist Schneller?
Bobby
- datenbank
0 Alexander (HH)0 Jörg Reinholz1 Encoder
Moin
Welche Variante ist schneller? oder gibt es keine Unterschiede?
INSERT INTO table (a, b, c) VALUES (1, 2, 3)
INSERT INTO table VALUES (1, 2, 3)
INSERT INTO table SET a=1, b=2, c=3
Gruß Bobby
Moin Moin!
Welche Variante ist schneller? oder gibt es keine Unterschiede?
Warum mißt Du nicht selbst?
INSERT INTO table (a, b, c) VALUES (1, 2, 3)
INSERT INTO table VALUES (1, 2, 3)
Das sieht aus wie normales SQL.
> ~~~sql
> INSERT INTO table SET a=1, b=2, c=3
>
Das nicht. MySQL? Da gelten ohnehin völlig andere Regeln ...
Gruß Bobby
*DER* Bobby? Bobby Tables? ;-)
Alexander
Moin
INSERT INTO table (a, b, c) VALUES (1, 2, 3)
INSERT INTO table VALUES (1, 2, 3)
>
> Das sieht aus wie normales SQL.
>
> > ~~~sql
> > INSERT INTO table SET a=1, b=2, c=3
> >
Das nicht. MySQL? Da gelten ohnehin völlig andere Regeln ...
Sorry ich meinte MySQL
*DER* Bobby? Bobby Tables? ;-)
NEIN
Gruß Bobby
Moin
Warum mißt Du nicht selbst?
So, Hab mir die Mühe gemacht mal zu messen, allerdings nur mit 10 Abfragen. Aber da wird bereits ein Trend sichtbar.
INSERT INTO table (a, b, c) VALUES (1, 2, 3)
INSERT INTO table VALUES (1, 2, 3)
Diese beiden nehmen sich nicht viel, wobei das 1. Insert einen kleinen Geschwindigkeitsvorteil hat. Dieser ist sehr sehr gering (Durchschnitt: 0,04728 zu 0,04786 sekunden)
INSERT INTO table SET a=1, b=2, c=3
Hier ist der Unterschied zu den anderen beiden Abfragen schon wesentlich deutlicher. (Durchschnitt 0,06171 sekunden)
Ich werde mich wohl zukünftig für die erste Variante entscheiden.
Gruß Bobby
Moin Moin!
Warum mißt Du nicht selbst?
So, Hab mir die Mühe gemacht mal zu messen, allerdings nur mit 10 Abfragen. Aber da wird bereits ein Trend sichtbar.
Nö, da besch...ummelst Du Dich selbst. 10 Abfragen sind völliger Mumpitz, da geht der eigentliche Aufwand völlig im Rauschen unter. Laß 10.000 Abfragen laufen, mit zufälligen Daten, um Caching zu verhindern. Dann kannst Du eine grobe Schätzung angeben.
Wenn Du wirklich ernsthaft messen willst, setzt Du vor jeder Messung die DB wieder auf einen definierten Zustand zurück (inkl. DB-Prozess, d.h. DB neu starten).
Wie kommst Du übrigens auf die 0,04 Sekunden? Handgestoppt? Dann Respekt! ;-)
Wenn Du den Rechner messen läßt, haut Dir bei so kurzen Zeiten auch noch das Betriebssystem jede Menge Müll in die Messung rein.
Alexander
Welche Variante ist schneller? oder gibt es keine Unterschiede?
Vermutlich nur geringe keine.
Die Frage ist, warum Du das wissen willst. Für einen Eintrag lohnt die Optimierung nicht. Willst Du aber viele tausend Zeilen eintragen, so sorge dafür, dass die Indexe erst angelegt werden, wenn der Import beendet ist. Damit vermeidest Du das zeitaufwenige Indexieren für jeden Insert.
INSERT INTO table VALUES (1, 2, 3)
Ohne Angabe der Spaltennamen würd ich hier noch einiges an Zeit für Fehlersuche einrechnen ;-)
Ich würd schon ausdrücklich benennen was wo eingetragen werden soll, auch falls es geringfügig langsamer wäre.