当存在外键时,Apache Derby数据库极快地更新记录

时间:2015-10-15 11:04:53

标签: java database derby

我正在更新2500条记录'使用下面的直接sql的字符串主键(从java运行):

更新子项表设置列='新值'其中column ='旧值'

我还有一个具有相同字符串列的父表,子表具有父表的外键(childtable.column - > parenttable.column)。

我看到的是,在2500行上运行上述sql语句需要大约6秒和300毫秒。我还测试并验证在一些测试场景中使用外部数据库工具(Squirrel)执行此操作需要很长时间。

如果我只执行以下任何一种操作,则上述sql的运行时间始终为400毫秒左右。 - 将外键从子节点移除到父节点 - 在子表的单列主键上的子表上添加索引,并在外键中引用子表中的列。即这是2列的综合索引。

我对添加复合索引的修复感到满意,但是这个修补程序在一个更复杂的例子中不再起作用,其中子表有一个复合主键,其中包含引用父表的列,那里是这个专栏上的外键。

我想知道如何改善此方案的性能。我期待执行此更新不应该这么慢400毫秒到6300毫秒是一个巨大的性能损失,对于我认为应该很简单的事情。

0 个答案:

没有答案