我使用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个。这是正常的吗?我还可以做些什么?
谢谢!
答案 0 :(得分:0)
最好选择100000组。您可以通过在查询中执行此语句来验证您的查询是否正在使用索引:
EXPLAIN PLAN FOR SELECT ...
如果查询确实使用了索引,则可以通过定义
来加快选择速度SET TABLE PATIENT CLUSTERED ON (PID)
或将PID定义为主键
您还应该考虑增加数据库的缓存大小,或者增加nio文件使用限制,或者指南中讨论的其他调整。使用http://hsqldb.org/support/
中的最新HSQLDB jar