diff --git src/wp-includes/taxonomy.php src/wp-includes/taxonomy.php
index f407621..1d93f69 100644
--- src/wp-includes/taxonomy.php
+++ src/wp-includes/taxonomy.php
@@ -1912,6 +1912,9 @@ function get_terms( $taxonomies, $args = '' ) {
 	}
 
 	$terms = $wpdb->get_results($query);
+	if ( 'all' == $_fields ) {
+		update_term_cache( $terms );
+	}
 
 	if ( empty($terms) ) {
 		wp_cache_add( $cache_key, array(), 'terms', DAY_IN_SECONDS );
diff --git tests/phpunit/tests/term/cache.php tests/phpunit/tests/term/cache.php
index d424353..ebb72c6 100644
--- tests/phpunit/tests/term/cache.php
+++ tests/phpunit/tests/term/cache.php
@@ -93,4 +93,31 @@ class Tests_Term_Cache extends WP_UnitTestCase {
 
 		_unregister_taxonomy( $tax );
 	}
+
+	/**
+	 * @ticket 30749
+	 */
+	public function test_get_terms_should_update_cache_for_located_terms() {
+		global $wpdb;
+
+		register_taxonomy( 'wptests_tax', 'post' );
+
+		$terms = $this->factory->term->create_many( 5, array(
+			'taxonomy' => 'wptests_tax',
+		) );
+
+		$term_objects = get_terms( 'wptests_tax', array(
+			'hide_empty' => false,
+		) );
+
+		$num_queries = $wpdb->num_queries;
+
+		foreach ( $terms as $term_id ) {
+			get_term( $term_id, 'wptests_tax' );
+		}
+
+		$this->assertSame( $num_queries, $wpdb->num_queries );
+
+		_unregister_taxonomy( 'wptests_tax' );
+	}
 }
