2012-05-25 34 views
6

我有成千上万的记录需要在单个用户点击时检索。目前它给我的结果非常缓慢,我不得不等待很长时间。有没有办法提高使用休眠检索这些结果?如何提高Java中的Hibernate性能?

我有一个情况,其中一个选择查询的方法将运行每一分钟。这是Hibernate给我的慢结果。我在MySQL中使用Hibernate。

+2

这有点像说“一根绳子有多长?”。我们需要更多关于你的HQL的细节。只是一个简单的“where”子句可以大大加快速度。 – david99world

+0

你使用任何缓存? (hibernate.cache.user_query_cache = true) – stzoannos

+0

从数据库中检索大量数据只是很慢,不管是否休眠。减少要检索的行数,例如,一次显示几百行。无论如何,您的用户无法同时查看所有10000行,因此没有必要向他们提供那么多信息。 – dasblinkenlight

回答

6

通常的做法是让二级缓存和查询缓存。比你的数据将从记忆中获得而不是从数据库中获取。

here

其他的事情好文章可以是有益的:

1索引 - 的情况下,存在这样的情况和订购 - 你必须建立你正在寻找/排序字段的索引 - 这样可以提高搜索速度提高10倍

2反常化 - 如果你有很多连接,一些反常化(把所有的单反表)可以帮助。但是,当一切都失败时,这应该是最终的解决方案

+0

非常感谢你我会试试这个 –

+0

我有一种情况,其中有选择查询的方法会每隔一分钟运行一次。这是休眠给我速度慢的地方 –

+0

随着第二级缓存和查询缓存的启用,它将在第一次执行查询后填充实体。所以第一次可以缓慢。但下次它将使用缓存值。从内存中读取将更快 – alexey28

1

我建议你去为Pagination,如果你要显示在网页上的记录和检索一次记录的一部分说100