Irm*_*tas 241 mysql sql performance
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
Run Code Online (Sandbox Code Playgroud)
那么这两个的表现怎么样?
Vin*_*vic 187
据我所知,两种语法都是等价的.第一个是SQL标准,第二个是MySQL的扩展.
所以他们应该完全相同的表现明智.
http://dev.mysql.com/doc/refman/5.6/en/insert.html说:
INSERT将新行插入现有表中.INSERT ... VALUES和INSERT ...语句的SET形式根据显式指定的值插入行.INSERT ... SELECT表单插入从另一个或多个表中选择的行.
小智 15
我认为扩展旨在允许插入和更新的类似语法.在Oracle中,类似的语法技巧是:
UPDATE table SET (col1, col2) = (SELECT val1, val2 FROM dual)
Run Code Online (Sandbox Code Playgroud)
由于语法是等效的(无论如何在 MySQL 中),我更喜欢这种INSERT INTO table SET x=1, y=2语法,因为它更容易修改并且更容易捕获语句中的错误,尤其是在插入大量列时。如果您必须插入 10 或 15 列或更多列(x, y) VALUES (1,2),在我看来,使用语法很容易混淆。
如果不同 SQL 标准之间的可移植性是一个问题,那么可能INSERT INTO table (x, y) VALUES (1,2)是首选。
如果您想在单个查询中插入多条记录,INSERT INTO ... SET语法似乎不起作用,而另一个则可以。但是在大多数实际情况下,您无论如何都要遍历一组记录以进行插入,尽管在某些情况下可能会构造一个大型查询以在一个查询中将一堆行插入到表中,而不是查询每一行,可能都有性能改进。真的不知道。
| 归档时间: |
|
| 查看次数: |
357622 次 |
| 最近记录: |