Permalink
Browse files

[1.6.x] Fixed #16895 -- Warned about cost of QuerySet ordering

Thanks outofculture at gmail.com for the suggestion.

Backport of cbf08c6 from master
  • Loading branch information...
1 parent e4274e3 commit 276e053803c847ce645b1859a162a997a4ee3789 @e0ne e0ne committed with timgraham Sep 8, 2013
Showing with 23 additions and 0 deletions.
  1. +6 −0 docs/ref/models/options.txt
  2. +6 −0 docs/ref/models/querysets.txt
  3. +11 −0 docs/topics/db/optimization.txt
View
6 docs/ref/models/options.txt
@@ -216,6 +216,12 @@ Django quotes column and table names behind the scenes.
ordering = ['-pub_date', 'author']
+.. warning::
+
+ Ordering is not a free operation. Each field you add to the ordering
+ incurs a cost to your database. Each foreign key you add will
+ impliclty include all of its default orderings as well.
+
``permissions``
---------------
View
6 docs/ref/models/querysets.txt
@@ -336,6 +336,12 @@ You can tell if a query is ordered or not by checking the
:attr:`.QuerySet.ordered` attribute, which will be ``True`` if the
``QuerySet`` has been ordered in any way.
+.. warning::
+
+ Ordering is not a free operation. Each field you add to the ordering
+ incurs a cost to your database. Each foreign key you add will
+ impliclty include all of its default orderings as well.
+
reverse
~~~~~~~
View
11 docs/topics/db/optimization.txt
@@ -306,6 +306,17 @@ instead of::
entry.blog.id
+Don't order results if you don't care
+-------------------------------------
+
+Ordering is not free; each field to order by is an operation the database must
+perform. If a model has a default ordering (:attr:`Meta.ordering
+<django.db.models.Options.ordering>`) and you don't need it, remove
+it on a ``QuerySet`` by calling
+:meth:`~django.db.models.query.QuerySet.order_by()` with no parameters.
+
+Adding an index to your database may help to improve ordering performance.
+
Insert in bulk
==============

0 comments on commit 276e053

Please sign in to comment.