以下几种情况下哪个执行速度更快?(需要在我的项目中决定适当的方法)
insert into table values (v1, v2, v3);
或者
insert into table1 value (v1)
insert into table1 value (v2)
insert into table1 value (v3)
你有什么意见?
不是我的意见;但是从经验来看,在一个查询中做某事而不是在多个查询中完成同一件事总是更快。
如果您正确使用批处理,它不应该有很大的不同。然而,第一个会更快。
由于以下原因,方法 1 会比方法 2 更快
1.Less 网络调用 2.Less Compilation/Parsing/Explain Plan/ in DB
问候阿比
我认为你的语法是错误的。如果您尝试通过一次插入来插入多行,则您的查询看起来更像这样:
INSERT INTO table1 VALUES (v1), (v2), (v3)
并且使用一个查询执行总是比多个查询(做同样的事情)更快。
(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
如果这适用于您的应用程序,将会更快。