diff --git a/modules/field/field.module b/modules/field/field.module
index a26ae0df34a74f7ca99ed412145ffa20e1674195..d6e1e004b6ae4e999302338dc0e4de5b0fec7144 100644
--- a/modules/field/field.module
+++ b/modules/field/field.module
@@ -234,17 +234,19 @@ function field_modules_enabled($modules) {
  * Implements hook_modules_disabled().
  */
 function field_modules_disabled($modules) {
-  foreach ($modules as $module) {
-    db_update('field_config')
-      ->fields(array('active' => 0))
-      ->condition('module', $module)
-      ->execute();
-    db_update('field_config')
-      ->fields(array('storage_active' => 0))
-      ->condition('storage_module', $module)
-      ->execute();
-    field_cache_clear(TRUE);
-  }
+  // Track fields whose field type is being disabled.
+  db_update('field_config')
+    ->fields(array('active' => 0))
+    ->condition('module', $modules, 'IN')
+    ->execute();
+
+  // Track fields whose storage backend is being disabled.
+  db_update('field_config')
+    ->fields(array('storage_active' => 0))
+    ->condition('storage_module', $modules, 'IN')
+    ->execute();
+
+  field_cache_clear(TRUE);
 }
 
 /**