Kaminari可以在沒有使用COUNT(*)查詢命中數據庫的情況下工作嗎?Kaminari without COUNT
我的應用程序的數據庫非常龐大,計算這些項目所花費的時間比獲取項目本身所花的時間要長得多,從而導致性能問題。
對於其他具有大型數據集的分頁解決方案的建議也很受歡迎。
Kaminari可以在沒有使用COUNT(*)查詢命中數據庫的情況下工作嗎?Kaminari without COUNT
我的應用程序的數據庫非常龐大,計算這些項目所花費的時間比獲取項目本身所花的時間要長得多,從而導致性能問題。
對於其他具有大型數據集的分頁解決方案的建議也很受歡迎。
那麼,Kaminari或will_paginate需要以某種方式計算總數,以確定要呈現的total_pages。這是不可避免的。我的解決方案是查看數據庫查詢並嘗試優化它。這是要走的路。
一般的分頁程序需要知道要顯示的記錄中的鏈接總數,但是有時候我們並不需要記錄的總數量,只是需要「前一頁」和「下一頁」鏈接。對於這種用例,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' %>
你能否更詳細地分享你的解決方案? – user566245