Index: wp-includes/taxonomy.php
===================================================================
--- wp-includes/taxonomy.php	(revision 14596)
+++ wp-includes/taxonomy.php	(working copy)
@@ -463,6 +463,7 @@
 			if ( ! $_term )
 				return $null;
 			wp_cache_add($term, $_term, $taxonomy);
+			wp_cache_add($_term->slug, $term, "{$taxonomy}_slugs");
 		}
 	}
 
@@ -521,13 +522,14 @@
 		$value = sanitize_title($value);
 		if ( empty($value) )
 			return false;
+		if ( $id = wp_cache_get($value, "{$taxonomy}_slugs") )
+			return get_term( (int) $id, $taxonomy, $output, $filter);
 	} else if ( 'name' == $field ) {
 		// Assume already escaped
 		$value = stripslashes($value);
 		$field = 't.name';
 	} else {
-		$field = 't.term_id';
-		$value = (int) $value;
+		return get_term( (int) $value, $taxonomy, $output, $filter);
 	}
 
 	$term = $wpdb->get_row( $wpdb->prepare( "SELECT t.*, tt.* FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy = %s AND $field = %s LIMIT 1", $taxonomy, $value) );
@@ -535,6 +537,7 @@
 		return false;
 
 	wp_cache_add($term->term_id, $term, $taxonomy);
+	wp_cache_add($term->slug, $term->term_id, "{$taxonomy}_slugs");
 
 	$term = sanitize_term($term, $taxonomy, $filter);
 
