Index: src/wp-includes/class-wp-query.php
===================================================================
--- src/wp-includes/class-wp-query.php	(revision 42392)
+++ src/wp-includes/class-wp-query.php	(working copy)
@@ -2583,9 +2583,19 @@
 			$cgroupby = ( ! empty( $cgroupby ) ) ? 'GROUP BY ' . $cgroupby : '';
 			$corderby = ( ! empty( $corderby ) ) ? 'ORDER BY ' . $corderby : '';
 
-			$comments = (array) $wpdb->get_results( "SELECT $distinct {$wpdb->comments}.* FROM {$wpdb->comments} $cjoin $cwhere $cgroupby $corderby $climits" );
+			$comments_request   =  "SELECT $distinct {$wpdb->comments}.comment_ID FROM {$wpdb->comments} $cjoin $cwhere $cgroupby $corderby $climits";
+			$key                = md5( $comments_request );
+			$last_changed       = wp_cache_get_last_changed( 'comment' );
+			$last_changed_posts = wp_cache_get_last_changed( 'posts' );
+			$cache_key          = "comment_feed:$key:$last_changed:$last_changed_posts";
+			$comment_ids        = wp_cache_get( $cache_key, 'comment' );
+			if ( false === $comment_ids ) {
+				$comment_ids = $wpdb->get_col( $comments_request );
+				wp_cache_add( $cache_key, (array) $comment_ids, 'comment' );
+			}
+			_prime_comment_caches( $comment_ids, false );
 			// Convert to WP_Comment
-			$this->comments      = array_map( 'get_comment', $comments );
+			$this->comments      = array_map( 'get_comment', $comment_ids );
 			$this->comment_count = count( $this->comments );
 
 			$post_ids = array();
@@ -2987,10 +2997,18 @@
 			/** This filter is documented in wp-includes/query.php */
 			$climits = apply_filters_ref_array( 'comment_feed_limits', array( 'LIMIT ' . get_option( 'posts_per_rss' ), &$this ) );
 
-			$comments_request = "SELECT {$wpdb->comments}.* FROM {$wpdb->comments} $cjoin $cwhere $cgroupby $corderby $climits";
-			$comments         = $wpdb->get_results( $comments_request );
+			$comments_request = "SELECT {$wpdb->comments}.comment_ID FROM {$wpdb->comments} $cjoin $cwhere $cgroupby $corderby $climits";
+			$key              = md5( $comments_request );
+			$last_changed     = wp_cache_get_last_changed( 'comment' );
+			$cache_key        = "comment_feed:$key:$last_changed";
+			$comment_ids      = wp_cache_get( $cache_key, 'comment' );
+			if ( false === $comment_ids ) {
+				$comment_ids = $wpdb->get_col( $comments_request );
+				wp_cache_add( $cache_key, $comment_ids, 'comment' );
+			}
+			_prime_comment_caches( $comment_ids, false );
 			// Convert to WP_Comment
-			$this->comments      = array_map( 'get_comment', $comments );
+			$this->comments      = array_map( 'get_comment', $comment_ids );
 			$this->comment_count = count( $this->comments );
 		}
 
