diff --git a/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php b/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php
index 4c8aff5..0288cd7 100644
--- a/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php
+++ b/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php
@@ -728,19 +728,21 @@ protected function loadFromSharedTables(array &$values, array &$translations) {
    * {@inheritdoc}
    */
   public function loadRevision($revision_id) {
-    // Build and execute the query.
-    $query_result = $this->buildQuery(array(), $revision_id)->execute();
-    $records = $query_result->fetchAllAssoc($this->idKey);
-
-    if (!empty($records)) {
-      // Convert the raw records to entity objects.
-      $entities = $this->mapFromStorageRecords($records, TRUE);
-      $this->postLoad($entities);
-      $entity = reset($entities);
-      if ($entity) {
-        return $entity;
+    $entity = &drupal_static(__METHOD__);
+
+    if (!isset($entity)) {
+      // Build and execute the query.
+      $query_result = $this->buildQuery(array(), $revision_id)->execute();
+      $records = $query_result->fetchAllAssoc($this->idKey);
+
+      if (!empty($records)) {
+        // Convert the raw records to entity objects.
+        $entities = $this->mapFromStorageRecords($records, TRUE);
+        $this->postLoad($entities);
+        $entity = reset($entities);
       }
     }
+    return $entity;
   }
 
   /**
