limiting by date at the database level is ~70x faster than limiting by page at the PHP level

This commit is contained in:
Shish 2012-01-20 04:32:21 +00:00
parent f100e6a9d4
commit 4c2adce744

View File

@ -147,18 +147,8 @@ class CommentList extends SimpleExtension {
} }
else if($event->get_arg(0) == "list") { else if($event->get_arg(0) == "list") {
$page_num = int_escape($event->get_arg(1)); $page_num = int_escape($event->get_arg(1));
if($page_num <= 100) {
$this->build_page($page_num); $this->build_page($page_num);
} }
else {
header("HTTP/1.0 403 Blocked");
$this->theme->display_error($page,
"This page is history~",
"Only the first 100 pages of comments are visible ".
"- 99% of the traffic to older pages was bots, and ".
"they were hammering the database o.o");
}
}
} }
} }
@ -275,9 +265,10 @@ class CommentList extends SimpleExtension {
$threads_per_page = 10; $threads_per_page = 10;
$start = $threads_per_page * ($current_page - 1); $start = $threads_per_page * ($current_page - 1);
$where = SPEED_HAX ? "WHERE posted > now() - interval '24 hours'" : "";
$get_threads = " $get_threads = "
SELECT image_id,MAX(posted) AS latest SELECT image_id,MAX(posted) AS latest
FROM comments FROM comments $where
GROUP BY image_id GROUP BY image_id
ORDER BY latest DESC ORDER BY latest DESC
LIMIT :limit OFFSET :offset LIMIT :limit OFFSET :offset