MySQL INSERT INTO表VALUES ..与INSERT INTO表SET

INSERT INTO table VALUES ..INSERT INTO table SET之间的主要区别是什么?

例:

 INSERT INTO table (a, b, c) VALUES (1,2,3) INSERT INTO table SET a=1, b=2, c=3 

那么这两个performance呢?

据我所知,两种语法都是相同的。 第一个是SQL标准,第二个是MySQL的扩展。

所以他们应该完全相同的performance明智。

http://dev.mysql.com/doc/refman/5.6/en/insert.html说:;

INSERT将新行插入到现有表中。 INSERT … VALUES和INSERT … SET语句根据显式指定的值插入行。 INSERT … SELECT表单插入从另一个或多个表中select的行。

我认为扩展是为了允许插入和更新类似的语法。 在Oracle中,类似的语法技巧是:

 UPDATE table SET (col1, col2) = (SELECT val1, val2 FROM dual) 

由于语法是等价的(在MySQL中),我更喜欢INSERT INTO table SET x=1, y=2语法,因为它更容易修改,并且更容易捕获语句中的错误,尤其是在插入大量列时。 如果你不得不插入10或者15或者更多的列,在我看来(x, y) VALUES (1,2)使用(x, y) VALUES (1,2)语法很容易混合使用。

如果不同SQL标准之间的可移植性是一个问题,那么INSERT INTO table (x, y) VALUES (1,2)将是首选。

如果你想插入多个logging在一个单一的查询,它似乎不像INSERT INTO ... SET语法将工作,而另一个将。 但是在大多数实际情况下,您正在循环一组logging以进行插入,不过有时可能会构build一个大的查询,以便在一个查询中插入一堆行到表中,每行可能会有性能提升。 真的不知道。