2012-04-14 6 views
1

私は3000のユーザーレコードを持つユーザーテーブルを持っています。ページネーションはうまくいきますが、火かき棒タイムラインを見ると、ダウンロードのコンテンツサイズは2.37MBで、ダウンロード時間は9.62秒です。ページネーションは正常に機能しますが、最初の25レコードだけをダウンロードし、追加の利用可能なページへのリンクを提供することを望んでいました。私は、思考sphinxs、レールfind_in_batches、まっすぐに黒点を試してみました:制限=> 25、などRuby Rails 2.3.xページネーションの背後にある理論は何ですか?

をページネーションは、レコードセットを分割し、ページごとに25件のレコードが表示される場合は、なぜそれがまだに表示されんテーブル全体をダウンロードしますか?これは改ページの背後にある理論を打ち消したり、何が欠けているのでしょうか?

@users = User.all(:conditions => ["client_id = ?", current_user.client_id]).paginate(:page => params[:page], :per_page => 25) 

もちろん、ここでの目標は、10または12秒に並置として、1秒か2秒以内に私のページをロードすることです。これにアプローチするより良い方法はありますか?

答えて

1

あなたはページネーションに使用する宝石について言及していませんが、通常の容疑者(またはそれでもRails 2.3に組み込まれていますが思い出せない)の場合は、実際にLIMITを使用して関連するレコード。あなたの遅いページの読み込み時間は、他の何かのために起こりそうです。開発ログを見て、実際のクエリを確認してください。

+0

あなたは正しい天です。私は自分のログファイルを見て、私は、私が知っていたよりもずっと多くのSQLアクティビティを行っていました。なぜなら、私は同時に多くのオプションと機能をページ上に持っているからです。今ではどこでリファクタリングを開始するのか知っています。あなたがそれを言及するまで私はそれを見ていなかったので、config.log_level =:debugを.rbログファイルに追加して、ライトをオンにしなければなりませんでした。言うまでもなく、私はwill_paginateを使用しています。どうもありがとうございます! – iamtoc

+0

喜んで助けてください。すべてのページの負荷について多くのSQLクエリがある場合は、ここで1 + Nの問題が発生する可能性があります。 http://guides.rubyonrails.org/active_record_querying.html#eager-loading-associations – Thilo

+0

問題を解決しました。ダウンロードされたコンテンツの大量の負荷は、私が原因と思ったSQL呼び出しから実際には発生していませんでした。実際には、私が作成していた他のSQL呼び出しは、隠されたdivにロードされていました。しかし、この発見はあなたが言及した指示を指し示すことによってなされたので、再び感謝します。 – iamtoc

関連する問題