diff --git a/src/wp-includes/option.php b/src/wp-includes/option.php
index 4e3886630d..9b93ad9237 100644
--- a/src/wp-includes/option.php
+++ b/src/wp-includes/option.php
@@ -275,6 +275,18 @@ function wp_load_options( $options ) {
 		return;
 	}
 
+	// Filter options that are known not to exist.
+	$notoptions = wp_cache_get( 'notoptions', 'options' );
+	if ( ! is_array( $notoptions ) ) {
+		$notoptions = array();
+	}
+	$options_to_prime = array_diff( $options_to_prime, array_keys( $notoptions ) );
+
+	// Bail early if there are no options to be loaded.
+	if ( empty( $options_to_prime ) ) {
+		return;
+	}
+
 	global $wpdb;
 	$results = $wpdb->get_results(
 		$wpdb->prepare(
diff --git a/tests/phpunit/tests/option/wpLoadOptions.php b/tests/phpunit/tests/option/wpLoadOptions.php
index bf6a8d5895..0168017a58 100644
--- a/tests/phpunit/tests/option/wpLoadOptions.php
+++ b/tests/phpunit/tests/option/wpLoadOptions.php
@@ -96,6 +96,18 @@ class Tests_Option_PrimeOptions extends WP_UnitTestCase {
 		foreach ( $options_to_load as $option ) {
 			$this->assertArrayHasKey( $option, $new_notoptions, "$option was not added to the notoptions cache." );
 		}
+
+		$initial_num_queries = get_num_queries();
+
+		// Check getting the options does not result in a database query.
+		foreach ( $options_to_load as $option ) {
+			get_option( $option );
+			$this->assertSame( 0, get_num_queries() - $initial_num_queries, "Loading notoption '{$option}' resulted in a database query." );
+		}
+
+		// Check re-loading does not result in a database query.
+		wp_load_options( $options_to_load );
+		$this->assertSame( 0, get_num_queries() - $initial_num_queries, 'Reloading resulted in a database query.' );
 	}
 
 	/**
@@ -111,6 +123,12 @@ class Tests_Option_PrimeOptions extends WP_UnitTestCase {
 
 		$this->assertSame( $alloptions, wp_cache_get( 'alloptions', 'options' ), 'The alloptions cache was modified.' );
 		$this->assertSame( $notoptions, wp_cache_get( 'notoptions', 'options' ), 'The notoptions cache was modified.' );
+
+		$initial_num_queries = get_num_queries();
+
+		// Check re-loading does not result in a database query.
+		wp_load_options( array() );
+		$this->assertSame( 0, get_num_queries() - $initial_num_queries, 'Reloading resulted in a database query.' );
 	}
 
 	/**
@@ -126,5 +144,15 @@ class Tests_Option_PrimeOptions extends WP_UnitTestCase {
 		$notoptions = wp_cache_get( 'notoptions', 'options' );
 		$this->assertIsArray( $notoptions, 'The notoptions cache should be an array.' );
 		$this->assertArrayHasKey( 'nonexistent_option', $notoptions, 'nonexistent_option was not added to notoptions.' );
+
+		$initial_num_queries = get_num_queries();
+
+		// Check getting the options does not result in a database query.
+		get_option( 'nonexistent_option' );
+		$this->assertSame( 0, get_num_queries() - $initial_num_queries, "Loading notoption 'nonexistent_option' resulted in a database query." );
+
+		// Check re-loading does not result in a database query.
+		wp_load_options( array( 'nonexistent_option' ) );
+		$this->assertSame( 0, get_num_queries() - $initial_num_queries, 'Reloading resulted in a database query.' );
 	}
 }
