2014-01-06 25 views
1

我正在使用Grails 2.2.4和MySQL來開發我的Web應用程序。
在數據庫中,我有Candidate表,它有超過300.000條記錄。當我對這個表進行查詢,通過分頁獲取所有的記錄是這樣的:導航最後一頁時Grails查詢分頁太慢

Candidate.list(max: 100, offset: X) 

返回的數據在最後幾頁很慢。它適用於首頁和中間頁面。我認爲這是一個數據庫問題。有沒有人遇到過這個問題?有沒有解決方案來解決這個問題?
非常感謝。

+0

多少是被發現了排序列的索引比上一頁慢? –

+0

每頁有100條記錄,所以我有超過3000頁。前1000個頁面中的每個頁面大約需要0.5s才能加載,但最後一頁(2500〜3000)需要6s以上的加載。非常非常慢! –

+0

你可以打開Hibernate的調試日誌嗎?看看最後一頁正在運行的sql。它不同於其他頁面的SQL?手動運行需要多長時間? – rcgeorge23

回答

1

我建議

  1. 排序查詢。未分類的分頁可能會導致每個請求都有不同的頁面。排序可以設置如下:

    Candidate.list(max: 100, offset: X, sort: "whatever_column") 
    
  2. 確保有

更多MySql上與限制排序例如可以here

+0

我在createCriteria中配置了排序參數,並在DB中的排序列上建立索引,但沒有任何更改。 –