404 page had horrible perf, it was using "take" instead of limit.

in such cases EVERY row is materialized and only after the limit is applied.

So ... imagine what happens on a forum with 2,000,000 topics
This commit is contained in:
Sam 2013-10-02 13:05:03 +10:00
parent a3128665cf
commit af467a1675
2 changed files with 5 additions and 5 deletions

View File

@ -1,5 +1,5 @@
class ExceptionsController < ApplicationController
skip_before_filter :check_xhr
skip_before_filter :check_xhr, :preload_json
def not_found
# centralize all rendering of 404 into app controller

View File

@ -65,12 +65,12 @@ class TopicQuery
"CASE WHEN (topics.pinned_at IS NOT NULL) THEN 0 ELSE 1 END, topics.bumped_at DESC"
end
def top_viewed(max)
Topic.listable_topics.visible.secured.order('views desc').take(10)
def top_viewed(max = 10)
Topic.listable_topics.visible.secured.order('views desc').limit(max)
end
def recent(max)
Topic.listable_topics.visible.secured.order('created_at desc').take(10)
def recent(max = 10)
Topic.listable_topics.visible.secured.order('created_at desc').limit(max)
end
end