Quelle est la principale différence entre INSERT INTO table VALUES ..
et INSERT INTO table SET
?
Exemple:
INSERT INTO table (a, b, c) VALUES (1,2,3)
INSERT INTO table SET a=1, b=2, c=3
Et qu'en est-il des performances de ces deux?
sql
mysql
performance
Irmantas
la source
la source
INSERT INTO table SET
ne soit pas standard. Cela semble beaucoup plus clair. Je suppose que je devraiINSERT INTO table ([column name, column name b]) VALUES (['value a', 'value b'])
quand même utiliser la syntaxe pour me sauver des ennuis si je porte sur Postgres.Réponses:
Autant que je sache, les deux syntaxes sont équivalentes. Le premier est le standard SQL, le second est l'extension de MySQL.
Ils devraient donc être exactement équivalents en termes de performances.
http://dev.mysql.com/doc/refman/5.6/en/insert.html dit:
la source
INSERT INTO table SET
? Est-ce seulement possible?Je pense que l'extension est destinée à permettre une syntaxe similaire pour les insertions et les mises à jour. Dans Oracle, une astuce syntaxique similaire est:
la source
INSERT ... SET ...
etINSERT ... VALUES ...
. Pour la fonctionnalité, vous disposez d'un code plus court et plus rapide à écrire, d'une lisibilité accrue et de l'élimination des fautes de frappe causées par le mélange de l'ordre des colonnes lors de l'écriture de votreVALUES
clause. Mon instinct me dit que sur le net, le bien l'emporte sur le mal, mais votre jugement peut différer.Étant donné que les syntaxes sont équivalentes (dans MySQL de toute façon), je préfère la
INSERT INTO table SET x=1, y=2
syntaxe, car elle est plus facile à modifier et à détecter les erreurs dans l'instruction, en particulier lors de l'insertion de nombreuses colonnes. Si vous devez insérer 10 ou 15 colonnes ou plus, il est vraiment facile de mélanger quelque chose en utilisant la(x, y) VALUES (1,2)
syntaxe, à mon avis.Si la portabilité entre différentes normes SQL est un problème, alors peut
INSERT INTO table (x, y) VALUES (1,2)
-être serait préférable.Et si vous souhaitez insérer plusieurs enregistrements dans une seule requête, il ne semble pas que la
INSERT INTO ... SET
syntaxe fonctionnera, tandis que l'autre le fera. Mais dans la plupart des cas pratiques, vous parcourez un ensemble d'enregistrements pour effectuer des insertions de toute façon, bien qu'il puisse y avoir des cas où peut-être la construction d'une grande requête pour insérer un groupe de lignes dans une table dans une seule requête, par rapport à une requête pour chaque ligne, pourrait avoir une amélioration des performances. Je ne sais vraiment pas.la source