2012-11-08 17 views
3

Kaminari可以在沒有使用COUNT(*)查詢命中數據庫的情況下工作嗎?Kaminari without COUNT

我的應用程序的數據庫非常龐大,計算這些項目所花費的時間比獲取項目本身所花的時間要長得多,從而導致性能問題。

對於其他具有大型數據集的分頁解決方案的建議也很受歡迎。

回答

1

那麼,Kaminari或will_paginate需要以某種方式計算總數,以確定要呈現的total_pages。這是不可避免的。我的解決方案是查看數據庫查詢並嘗試優化它。這是要走的路。

+0

你能否更詳細地分享你的解決方案? – user566245

1

分頁,而不會發出SELECT COUNT查詢

一般的分頁程序需要知道要顯示的記錄中的鏈接總數,但是有時候我們並不需要記錄的總數量,只是需要「前一頁」和「下一頁」鏈接。對於這種用例,Kaminari提供without_count模式,該模式創建可分頁收集而不計算所有記錄的數量。當你處理一個非常大的數據集時,這可能會有所幫助,因爲在大表上計算RDBMS往往會變慢。

只需添加.without_count到您的分頁對象:

User.page(3).without_count 

在你的視圖文件,你只能使用簡單的助手像以下,而不是全功能paginate幫手:

<%= link_to_prev_page @users, 'Previous Page' %> 
<%= link_to_next_page @users, 'Next Page' %> 

來源:github.com/kaminari