如何加快SELECT的HSQLDB UPDATE?

时间:2013-12-05 20:32:03

标签: sql performance sql-update hsqldb

我需要从查询表中设置主表中的值,如下所示:

UPDATE primary
SET primary.value =
  (SELECT lookup.value FROM lookup WHERE primary.key = lookup.key)

关键字段是两个表中的VARCHAR字段,并且在主表中有一个索引,在查找表中有唯一索引。

这两个表的行数约为1000万行。

在具有12个内核且分配了15G堆空间的快速服务器上使用HSQLDB 2.3需要相当长的时间。

我应该知道尽可能加快这项操作的速度?有什么我可以做大量的错误,以至于表现可能会受到严重影响吗?涉及的VARCHAR键字段的最大大小是否会产生严重影响?

我已经看到理论上有一些替代方法如何在SQL中执行此操作,人们声称它们更快,但HSQLDB似乎不支持任何这些。

1 个答案:

答案 0 :(得分:0)

回答一句:

您实际做的是:向数据库分派1000万(子)选项(至少在大多数数据库系统中)。我不知道这背后的真正需求,但我会尝试用批量的EXPORT / LOAD表来解决这个问题

答案二:

您可能会遇到一个非常好的锁定和日志记录(LOGFILE)问题。再次:我会尝试使用批处理中的EXPORT / LOAD表

编辑:导出/导入 - 我不知道(您需要的)语法,基础知识

EXPORT 
  select -needed fields- 
  from 
      primary, lookup
  where
      primary.key = lookup.key -- this will be fast


IMPORT into primary pevios EXPORT 

编辑:  尝试“独家模式中的锁定表”bofore开始更新