HSQL简单的一列更新永远运行

时间:2012-08-05 14:31:11

标签: performance hsqldb

我有一个大约125 000行的数据库,每行包含主键,一对int列和几个varchars。
我添加了一个int列,我试图在添加非null约束之前填充它。

db保存在脚本文件中。我在某处看到所有受影响的行在实际更新之前都被加载到内存中,这意味着每行都不会写入磁盘。整个数据库大约是20MB,这意味着加载它并且进行更新应该相当快,对吧?

所以,没有连接,没有嵌套查询,基本更新。 我尝试了多个数据库管理器,包括与hsql jar捆绑在一起的数据库管理器。

  

更新tbl1 set col1 = 1

查询永远不会完成执行。

1 个答案:

答案 0 :(得分:1)

可能内存不足。

执行此操作的更简单方法是使用DEFAULT 1定义列,无论表的大小如何,都不会占用太多内存。您甚至可以同时添加非空约束

ALTER TABLE T ADD COLUMN C INT DEFAULT 1 NOT NULL