hsqldb选择查询真的很慢

时间:2011-02-22 12:51:53

标签: hsqldb

我使用hsqldb并且我构建了一个包含10.000.000记录的表的数据库。构建此表大约需要15分钟。然后在另一个需要这些数据的程序中,我尝试阅读它们。我认为以100.000为一组读取它们会更快。所以我执行这个查询:

rs = st.executeQuery("SELECT * FROM PATIENT WHERE pid>="+start+" AND pid<="+end+" ;");

其中start和end定义了我想要每次读取的组。

我在pid上做了一个索引,但查询执行仍然很慢。实际上它已经运行了24分钟,并取得了100个组中的前24个。这是正常的吗?我还可以做些什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

最好选择100000组。您可以通过在查询中执行此语句来验证您的查询是否正在使用索引:

EXPLAIN PLAN FOR SELECT ...

如果查询确实使用了索引,则可以通过定义

来加快选择速度
SET TABLE PATIENT CLUSTERED ON (PID)

或将PID定义为主键

您还应该考虑增加数据库的缓存大小,或者增加nio文件使用限制,或者指南中讨论的其他调整。使用http://hsqldb.org/support/

中的最新HSQLDB jar