Was ist der Hauptunterschied zwischen INSERT INTO table VALUES ..
und INSERT INTO table SET
?
Beispiel:
INSERT INTO table (a, b, c) VALUES (1,2,3)
INSERT INTO table SET a=1, b=2, c=3
Und was ist mit der Leistung dieser beiden?
sql
mysql
performance
Irmantas
quelle
quelle
INSERT INTO table SET
nicht Standard ist. Es scheint viel klarer. Ich denke, ich muss dieINSERT INTO table ([column name, column name b]) VALUES (['value a', 'value b'])
Syntax trotzdem verwenden, um mich vor Problemen zu schützen, wenn ich auf Postgres portiere.Antworten:
Soweit ich das beurteilen kann, sind beide Syntaxen gleichwertig. Der erste ist der SQL-Standard, der zweite ist die Erweiterung von MySQL.
Sie sollten also in Bezug auf die Leistung genau gleichwertig sein.
http://dev.mysql.com/doc/refman/5.6/en/insert.html sagt:
quelle
INSERT INTO table SET
? Ist das überhaupt möglich?Ich denke, die Erweiterung soll eine ähnliche Syntax für Einfügungen und Aktualisierungen ermöglichen. In Oracle ist ein ähnlicher syntaktischer Trick:
quelle
INSERT ... SET ...
undINSERT ... VALUES ...
. Für die Funktion haben Sie kürzeren, schneller zu schreibenden Code, eine verbesserte Lesbarkeit und die Beseitigung von Tippfehlern, die durch Verwechslung Ihrer Spaltenreihenfolge beim Schreiben IhrerVALUES
Klausel verursacht werden. Mein Bauch sagt mir, dass im Netz das Gute das Schlechte überwiegt, aber Ihr Urteil kann abweichen.Da die Syntaxen äquivalent sind (in MySQL jedenfalls), bevorzuge ich die
INSERT INTO table SET x=1, y=2
Syntax, da es einfacher ist, Fehler in der Anweisung zu ändern und leichter abzufangen, insbesondere beim Einfügen vieler Spalten. Wenn Sie 10 oder 15 oder mehr Spalten einfügen müssen, ist es wirklich einfach, etwas mit dem zu verwechseln(x, y) VALUES (1,2)
meiner Meinung Syntax .Wenn die Portabilität zwischen verschiedenen SQL-Standards ein Problem darstellt, ist dies möglicherweise der Fall
INSERT INTO table (x, y) VALUES (1,2)
bevorzugt.Und wenn Sie mehrere Datensätze in eine einzelne Abfrage einfügen möchten, scheint die
INSERT INTO ... SET
Syntax nicht zu funktionieren, während die andere funktioniert. In den meisten praktischen Fällen durchlaufen Sie jedoch eine Reihe von Datensätzen, um Einfügungen durchzuführen. In einigen Fällen kann es jedoch vorkommen, dass Sie eine große Abfrage erstellen, um eine Reihe von Zeilen in eine Tabelle in einer Abfrage einzufügen, im Gegensatz zu einer Abfrage für Jede Zeile kann eine Leistungsverbesserung aufweisen. Weiß wirklich nicht.quelle