我正在使用Java中的mysql。
基本上,我有多个查询,每个查询都在数据库中创建一个表,以及一个ALTER
语句,用于调整其中一个属性的自动增量初始值。我正在执行这些查询作为事务 - 即要么全部都提交到数据库,要么都没有。但为此,我为每个查询创建了一个单独的Statement
- 总共8个 - 并执行每个查询。之后,我提交了所有结果。然后我必须关闭每个Statement
。
但这似乎效率低下。对许多Statements
。所以我想知道批处理方法是否有效。我担心的是批处理方法同时执行所有查询,因为我有Referential Integrity Constraints
和ALTER
查询,所以表之间存在依赖关系 - 因此它们的创建顺序很重要。这不正确吗?我是否误解了批处理语句的工作原理?
如果上面的逻辑是正确的,那么我是否应该将几个查询组合在一起(不相关)并使用批处理方法来执行它们。这将减少我Statements
的数量。
答案 0 :(得分:0)
我认为你不能批量DDL(即创建, drop , alter )。此外,要求动态 DDL ,性能明智,这不是一个好主意。
您可以使用DML批量Statement.addBatch(String)
语句(即选择,插入,更新和删除语句),然后调用Statement.executeBatch()
。