diff --git a/modules/comment/comment.install b/modules/comment/comment.install
index 640b54f7f59a04a5dedc0046085570a5626af636..f6db6408edf765cc0e8f75742d601976d81fc09d 100644
--- a/modules/comment/comment.install
+++ b/modules/comment/comment.install
@@ -194,6 +194,19 @@ function comment_update_7009() {
   return array();
 }
 
+/**
+ * Add {node_comment_statistics}.cid column.
+ */
+function comment_update_7010() {
+  db_add_field('node_comment_statistics', 'cid', array(
+    'type' => 'int',
+    'not null' => TRUE,
+    'default' => 0,
+    'description' => 'The {comment}.cid of the last comment.',
+  ));
+  db_add_index('node_comment_statistics', 'cid', array('cid'));
+}
+
 /**
  * @} End of "defgroup updates-6.x-to-7.x"
  * The next series of updates should start at 8000.
@@ -331,6 +344,12 @@ function comment_schema() {
         'default' => 0,
         'description' => 'The {node}.nid for which the statistics are compiled.',
       ),
+      'cid' => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'default' => 0,
+        'description' => 'The {comment}.cid of the last comment.',
+      ),
       'last_comment_timestamp' => array(
         'type' => 'int',
         'not null' => TRUE,
diff --git a/modules/comment/comment.module b/modules/comment/comment.module
index 9b7396d536b5c70b721995f1a61cee6c01dabfa1..5688847475226b10165e88f87acec9f2c24fd3dd 100644
--- a/modules/comment/comment.module
+++ b/modules/comment/comment.module
@@ -371,44 +371,29 @@ function comment_permalink($comment) {
 /**
  * Find the most recent comments that are available to the current user.
  *
- * This is done in two steps:
- *   1. Query the {node_comment_statistics} table to find n number of nodes that
- *      have the most recent comments. This table is indexed on
- *      last_comment_timestamp, thus making it a fast query.
- *   2. Load the information from the comments table based on the nids found
- *      in step 1.
- *
  * @param integer $number
- *   (optional) The maximum number of comments to find.
+ *   (optional) The maximum number of comments to find. Defaults to 10.
  * @return
- *   An array of comment objects each containing a nid, subject, cid, created
- *   and changed, or an empty array if there are no recent comments visible
- *   to the current user.
+ *   An array of comment objects or an empty array if there are no recent
+ *   comments visible to the current user.
  */
 function comment_get_recent($number = 10) {
-  // Step 1: Select a $number of nodes which have new comments,
-  //         and are visible to the current user.
-  $nids = db_query_range("SELECT nc.nid FROM {node_comment_statistics} nc WHERE nc.comment_count > 0 ORDER BY nc.last_comment_timestamp DESC", 0, $number)->fetchCol();
-
-  $comments = array();
-  if (!empty($nids)) {
-    // Step 2: From among the comments on the nodes selected in the first query,
-    //         find the $number of most recent comments.
-    // Using Query Builder here for the IN-Statement.
-    $query = db_select('comment', 'c');
-    $query->innerJoin('node', 'n', 'n.nid = c.nid');
-    return $query
-      ->fields('c', array('nid', 'subject', 'cid', 'created', 'changed'))
-      ->condition('c.nid', $nids, 'IN')
-      ->condition('c.status', COMMENT_PUBLISHED)
-      ->condition('n.status', 1)
-      ->orderBy('c.cid', 'DESC')
-      ->range(0, $number)
-      ->execute()
-      ->fetchAll();
-  }
+  $query = db_select('comment', 'c');
+  $query->innerJoin('node', 'n', 'n.nid = c.nid');
+  $query->innerJoin('node_comment_statistics', 'ncs', 'ncs.nid = c.nid');
+  $query->addTag('node_access');
+  $comments = $query
+    ->fields('c')
+    ->condition('ncs.comment_count', 0, '>')
+    ->condition('c.status', COMMENT_PUBLISHED)
+    ->condition('n.status', NODE_PUBLISHED)
+    ->orderBy('ncs.last_comment_timestamp', 'DESC')
+    ->orderBy('c.cid', 'DESC')
+    ->range(0, $number)
+    ->execute()
+    ->fetchAll();
 
-  return $comments;
+  return $comments ? $comments : array();
 }
 
 /**
@@ -1102,6 +1087,7 @@ function comment_node_load($nodes, $types) {
       $comments_enabled[] = $node->nid;
     }
     else {
+      $node->cid = 0;
       $node->last_comment_timestamp = $node->created;
       $node->last_comment_name = '';
       $node->comment_count = 0;
@@ -1110,8 +1096,9 @@ function comment_node_load($nodes, $types) {
 
   // For nodes with comments enabled, fetch information from the database.
   if (!empty($comments_enabled)) {
-    $result = db_query('SELECT nid, last_comment_timestamp, last_comment_name, comment_count FROM {node_comment_statistics} WHERE nid IN(:comments_enabled)', array(':comments_enabled' => $comments_enabled));
+    $result = db_query('SELECT nid, cid, last_comment_timestamp, last_comment_name, comment_count FROM {node_comment_statistics} WHERE nid IN (:comments_enabled)', array(':comments_enabled' => $comments_enabled));
     foreach ($result as $record) {
+      $nodes[$record->nid]->cid = $record->cid;
       $nodes[$record->nid]->last_comment_timestamp = $record->last_comment_timestamp;
       $nodes[$record->nid]->last_comment_name = $record->last_comment_name;
       $nodes[$record->nid]->comment_count = $record->comment_count;
@@ -1135,6 +1122,7 @@ function comment_node_insert($node) {
   db_insert('node_comment_statistics')
     ->fields(array(
       'nid' => $node->nid,
+      'cid' => 0,
       'last_comment_timestamp' => $node->changed,
       'last_comment_name' => NULL,
       'last_comment_uid' => $node->uid,
@@ -2273,7 +2261,8 @@ function _comment_update_node_statistics($nid) {
       ':status' => COMMENT_PUBLISHED,
     ))->fetchObject();
     db_update('node_comment_statistics')
-      ->fields( array(
+      ->fields(array(
+        'cid' => $last_reply->cid,
         'comment_count' => $count,
         'last_comment_timestamp' => $last_reply->changed,
         'last_comment_name' => $last_reply->uid ? '' : $last_reply->name,
@@ -2286,7 +2275,8 @@ function _comment_update_node_statistics($nid) {
     // Comments do not exist.
     $node = db_query('SELECT uid, created FROM {node} WHERE nid = :nid', array(':nid' => $nid))->fetchObject();
     db_update('node_comment_statistics')
-      ->fields( array(
+      ->fields(array(
+        'cid' => 0,
         'comment_count' => 0,
         'last_comment_timestamp' => $node->created,
         'last_comment_name' => '',