在以下情况下,哪个执行得更快?(在我的项目中需要确定适当的方法)
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.减少网络呼叫2.减少数据库内的编译/解析/解释计划/
问候阿比
我认为你的语法是错误的。如果您尝试通过一次插入插入多行,则查询将如下所示:
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/
您还需要在连接器/J 驱动程序中启用 rewriteBatchedStatements
属性:http://dev.mysql.com/doc/refman/5.5/en/connector-j-reference-configuration-properties.html
如果这对您的应用程序有用,LOAD DATA INFILE
会更快。