Index: wp-includes/default-widgets.php
===================================================================
--- wp-includes/default-widgets.php	(revision 16894)
+++ wp-includes/default-widgets.php	(working copy)
@@ -649,7 +649,9 @@
  		else if ( $number < 1 )
  			$number = 1;
 
+		add_action('comments_clauses', array( 'WP_Widget_Recent_Comments', 'comments_query_filter'));
 		$comments = get_comments( array( 'number' => $number, 'status' => 'approve' ) );
+		remove_action('comments_clauses', array( 'WP_Widget_Recent_Comments', 'comments_query_filter'));
 		$output .= $before_widget;
 		if ( $title )
 			$output .= $before_title . $title . $after_title;
@@ -657,7 +659,14 @@
 		$output .= '<ul id="recentcomments">';
 		if ( $comments ) {
 			foreach ( (array) $comments as $comment) {
-				$output .=  '<li class="recentcomments">' . /* translators: comments widget: 1: comment author, 2: post link */ sprintf(_x('%1$s on %2$s', 'widgets'), get_comment_author_link(), '<a href="' . esc_url( get_comment_link($comment->comment_ID) ) . '">' . get_the_title($comment->comment_post_ID) . '</a>') . '</li>';
+				$ispostcached = wp_cache_get($comment->ID, 'posts') == false ? false : true;
+				if(!$ispostcached) {
+					wp_cache_add($comment->ID, $comment, 'posts');
+				}
+				$output .=  '<li class="recentcomments">' . /* translators: comments widget: 1: comment author, 2: post link */ sprintf(_x('%1$s on %2$s', 'widgets'), get_comment_author_link(), '<a href="' . esc_url( get_comment_link($comment) ) . '">' . get_the_title($comment) . '</a>') . '</li>';
+				if(!$ispostcached) {
+					wp_cache_delete($comment->ID, 'posts');
+				}
 			}
  		}
 		$output .= '</ul>';
@@ -692,6 +701,14 @@
 		<input id="<?php echo $this->get_field_id('number'); ?>" name="<?php echo $this->get_field_name('number'); ?>" type="text" value="<?php echo $number; ?>" size="3" /></p>
 <?php
 	}
+
+	function comments_query_filter($pieces) {
+		global $wpdb;
+
+		$pieces['join'] .= " LEFT JOIN $wpdb->posts ON ( $wpdb->comments.comment_post_ID = $wpdb->posts.ID )";
+
+		return $pieces;
+	}
 }
 
 /**
