diff options
-rw-r--r-- | modules/comment/comment.install | 10 | ||||
-rw-r--r-- | modules/comment/comment.module | 5 |
2 files changed, 12 insertions, 3 deletions
diff --git a/modules/comment/comment.install b/modules/comment/comment.install index 9eff90068..0ef098a78 100644 --- a/modules/comment/comment.install +++ b/modules/comment/comment.install @@ -352,6 +352,14 @@ function comment_update_7013(&$sandbox) { } /** + * Optimize index for comment_num_new() and comment_new_page_count(). + */ +function comment_update_7014() { + db_drop_index('comment', 'comment_num_new'); + db_add_index('comment', 'comment_num_new', array('nid', 'status', 'created', 'cid', 'thread')); +} + +/** * @} End of "defgroup updates-6.x-to-7.x" * The next series of updates should start at 8000. */ @@ -454,7 +462,7 @@ function comment_schema() { ), 'indexes' => array( 'comment_status_pid' => array('pid', 'status'), - 'comment_num_new' => array('nid', 'changed', 'status'), + 'comment_num_new' => array('nid', 'status', 'created', 'cid', 'thread'), 'comment_uid' => array('uid'), 'comment_nid_language' => array('nid', 'language'), ), diff --git a/modules/comment/comment.module b/modules/comment/comment.module index ee0f0764f..68be18b92 100644 --- a/modules/comment/comment.module +++ b/modules/comment/comment.module @@ -523,7 +523,8 @@ function comment_new_page_count($num_comments, $new_replies, $node) { ->fields('comment', array('thread')) ->condition('nid', $node->nid) ->condition('status', COMMENT_PUBLISHED) - ->orderBy('changed', 'DESC') + ->orderBy('created', 'DESC') + ->orderBy('cid', 'DESC') ->range(0, $new_replies); // 2. Find the first thread. @@ -1643,7 +1644,7 @@ function comment_num_new($nid, $timestamp = 0) { $timestamp = ($timestamp > NODE_NEW_LIMIT ? $timestamp : NODE_NEW_LIMIT); // Use the timestamp to retrieve the number of new comments. - return db_query('SELECT COUNT(cid) FROM {comment} WHERE nid = :nid AND changed > :timestamp AND status = :status', array( + return db_query('SELECT COUNT(cid) FROM {comment} WHERE nid = :nid AND created > :timestamp AND status = :status', array( ':nid' => $nid, ':timestamp' => $timestamp, ':status' => COMMENT_PUBLISHED, |