diff --git a/core/modules/field/src/FieldConfigStorage.php b/core/modules/field/src/FieldConfigStorage.php
index ff776cab2dec3f30b098bb3414eb9fc46c93c5ba..841942487f2de4c7479af5e84fb9a6d9b170cdc3 100644
--- a/core/modules/field/src/FieldConfigStorage.php
+++ b/core/modules/field/src/FieldConfigStorage.php
@@ -97,19 +97,25 @@ public function loadByProperties(array $conditions = array()) {
     $include_deleted = isset($conditions['include_deleted']) ? $conditions['include_deleted'] : FALSE;
     unset($conditions['include_deleted']);
 
-    // Get fields stored in configuration.
-    if (isset($conditions['entity_type']) && isset($conditions['field_name'])) {
-      // Optimize for the most frequent case where we do have a specific ID.
-      $id = $conditions['entity_type'] . $conditions['field_name'];
-      $fields = $this->loadMultiple(array($id));
-    }
-    else {
-      // No specific ID, we need to examine all existing fields.
-      $fields = $this->loadMultiple();
+    $fields = array();
+
+    // Get fields stored in configuration. If we are explicitly looking for
+    // deleted fields only, this can be skipped, because they will be retrieved
+    // from state below.
+    if (empty($conditions['deleted'])) {
+      if (isset($conditions['entity_type']) && isset($conditions['field_name'])) {
+        // Optimize for the most frequent case where we do have a specific ID.
+        $id = $conditions['entity_type'] . $conditions['field_name'];
+        $fields = $this->loadMultiple(array($id));
+      }
+      else {
+        // No specific ID, we need to examine all existing fields.
+        $fields = $this->loadMultiple();
+      }
     }
 
     // Merge deleted fields (stored in state) if needed.
-    if ($include_deleted) {
+    if ($include_deleted || !empty($conditions['deleted'])) {
       $deleted_fields = $this->state->get('field.field.deleted') ?: array();
       foreach ($deleted_fields as $id => $config) {
         $fields[$id] = $this->create($config);
diff --git a/core/modules/field/src/FieldInstanceConfigStorage.php b/core/modules/field/src/FieldInstanceConfigStorage.php
index e9b15dca5a6e19791aaa213dc72e2e990bc67459..20dc083089c29d59a93cf1962080deba111998de 100644
--- a/core/modules/field/src/FieldInstanceConfigStorage.php
+++ b/core/modules/field/src/FieldInstanceConfigStorage.php
@@ -104,19 +104,25 @@ public function loadByProperties(array $conditions = array()) {
     $include_deleted = isset($conditions['include_deleted']) ? $conditions['include_deleted'] : FALSE;
     unset($conditions['include_deleted']);
 
-    // Get instances stored in configuration.
-    if (isset($conditions['entity_type']) && isset($conditions['bundle']) && isset($conditions['field_name'])) {
-      // Optimize for the most frequent case where we do have a specific ID.
-      $id = $conditions['entity_type'] . '.' . $conditions['bundle'] . '.' . $conditions['field_name'];
-      $instances = $this->loadMultiple(array($id));
-    }
-    else {
-      // No specific ID, we need to examine all existing instances.
-      $instances = $this->loadMultiple();
+    $instances = array();
+
+    // Get instances stored in configuration. If we are explicitly looking for
+    // deleted instances only, this can be skipped, because they will be
+    // retrieved from state below.
+    if (empty($conditions['deleted'])) {
+      if (isset($conditions['entity_type']) && isset($conditions['bundle']) && isset($conditions['field_name'])) {
+        // Optimize for the most frequent case where we do have a specific ID.
+        $id = $conditions['entity_type'] . '.' . $conditions['bundle'] . '.' . $conditions['field_name'];
+        $instances = $this->loadMultiple(array($id));
+      }
+      else {
+        // No specific ID, we need to examine all existing instances.
+        $instances = $this->loadMultiple();
+      }
     }
 
     // Merge deleted instances (stored in state) if needed.
-    if ($include_deleted) {
+    if ($include_deleted || !empty($conditions['deleted'])) {
       $deleted_instances = $this->state->get('field.instance.deleted') ?: array();
       $deleted_fields = $this->state->get('field.field.deleted') ?: array();
       foreach ($deleted_instances as $id => $config) {