diff --git a/django/contrib/admin/views/main.py b/django/contrib/admin/views/main.py
index df0fd9f..8e3d605 100644
--- a/django/contrib/admin/views/main.py
+++ b/django/contrib/admin/views/main.py
@@ -104,9 +104,11 @@ class ChangeList(object):
 
         # Get the total number of objects, with no admin filters applied.
         # Perform a slight optimization: Check to see whether any filters were
-        # given. If not, use paginator.hits to calculate the number of objects,
-        # because we've already done paginator.hits and the value is cached.
-        if not self.query_set.query.where:
+        # given by the user, if any came from ModelAdmin.queryset we don't
+        # consider those here. If not, use paginator.hits to calculate the
+        # number of objects, because we've already done paginator.hits and the
+        # value is cached.
+        if not set(self.params) - set([ALL_VAR, ORDER_VAR, ORDER_TYPE_VAR, SEARCH_VAR, IS_POPUP_VAR]):
             full_result_count = result_count
         else:
             full_result_count = self.root_query_set.count()
