我有一個非常大的sql查詢,我使用分頁。 問題是,查詢後分頁過濾數據,我需要限制paginatora帶着請求被處理得更快。rails 2 sql和分頁
運行的方案:
@request = sql.execute("select ....")
@request = @request.paginate(:per_page => 10)
我有一個非常大的sql查詢,我使用分頁。 問題是,查詢後分頁過濾數據,我需要限制paginatora帶着請求被處理得更快。rails 2 sql和分頁
運行的方案:
@request = sql.execute("select ....")
@request = @request.paginate(:per_page => 10)
你可以限制和抵消查詢自己:
@request = sql.execute("select ... offset #{params[:page] * 10} limit #{params[:page]")
的問題是如何在這得到一個分頁的結果,因爲你實際需要的記錄總數(SELECT COUNT)以及其他一些數據,你可以閱讀一篇很好的文章,解釋如何在自定義集合上使用will_paginate,並且由於您正在執行自己的查詢,因此您正在使用自定義集合
在第二次審查,你可以做到以下幾點:
sql = " SELECT ..."
@request = MyModel.paginate_by_sql(sql, :page => params[:page] || 1, :per_page => 10)
,但你必須把ActiveRecord模型中選擇的結果
第二種方法適用於我 – Nar 2013-03-06 10:46:17
由於您使用原始的sql來獲得您的結果,您應該建立自己的分頁系統。我不認爲kaminari或will_paginate是爲了處理原始的sql請求而構建的。 – jvnill 2013-03-06 09:09:51
你確定它不是花費時間的sql查詢嗎? – edralph 2013-03-06 09:12:00