2012-05-25 30 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