执行多个sql语句批处理问题?

时间:2015-08-03 00:12:59

标签: java mysql database batch-processing

我正在使用Java中的mysql。

基本上,我有多个查询,每个查询都在数据库中创建一个表,以及一个ALTER语句,用于调整其中一个属性的自动增量初始值。我正在执行这些查询作为事务 - 即要么全部都提交到数据库,要么都没有。但为此,我为每个查询创建了一个单独的Statement - 总共8个 - 并执行每个查询。之后,我提交了所有结果。然后我必须关闭每个Statement

但这似乎效率低下。对许多Statements。所以我想知道批处理方法是否有效。我担心的是批处理方法同时执行所有查询,因为我有Referential Integrity ConstraintsALTER查询,所以表之间存在依赖关系 - 因此它们的创建顺序很重要。这不正确吗?我是否误解了批处理语句的工作原理?

如果上面的逻辑是正确的,那么我是否应该将几个查询组合在一起(不相关)并使用批处理方法来执行它们。这将减少我Statements的数量。

1 个答案:

答案 0 :(得分:0)

我认为你不能批量DDL(即创建 drop alter )。此外,要求动态 DDL ,性能明智,这不是一个好主意。

您可以使用DML批量Statement.addBatch(String)语句(即选择插入更新删除语句),然后调用Statement.executeBatch()