1

以下几种情况下哪个执行速度更快?(需要在我的项目中决定适当的方法)

insert into table values (v1, v2, v3);

或者

insert into table1 value (v1)
insert into table1 value (v2)
insert into table1 value (v3)

你有什么意见?

4

5 回答 5

3

不是我的意见;但是从经验来看,在一个查询中做某事而不是在多个查询中完成同一件事总是更快。

于 2012-04-18T14:43:43.160 回答
1

如果您正确使用批处理,它不应该有很大的不同。然而,第一个会更快。

于 2012-04-18T14:43:37.730 回答
0

由于以下原因,方法 1 会比方法 2 更快

1.Less 网络调用 2.Less Compilation/Parsing/Explain Plan/ in DB

问候阿比

于 2012-04-18T14:46:49.273 回答
0

我认为你的语法是错误的。如果您尝试通过一次插入来插入多行,则您的查询看起来更像这样:

INSERT INTO table1 VALUES (v1), (v2), (v3)

并且使用一个查询执行总是比多个查询(做同样的事情)更快。

于 2012-04-18T14:47:05.090 回答
0

(v1, v2, v3) 版本会更快,但请注意如何在您的驱动程序中最好地做到这一点。在 Java 中,您将使用一个简单的INSERT INTO table VALUES (?)PreparedStatement,并使用 addBatch() 将它们组合成一个更大的语句,该语句由 executeBatch() 执行。

请参阅第 3.4 节:http: //java.sun.com/developer/Books/JDBCTutorial/

您还需要rewriteBatchedStatements在 Connector/J 驱动程序中启用该属性:http: //dev.mysql.com/doc/refman/5.5/en/connector-j-reference-configuration-properties.html

LOAD DATA INFILE如果这适用于您的应用程序,将会更快。

于 2012-04-19T02:53:36.460 回答