Commit 276e0538 authored by e0ne's avatar e0ne Committed by Tim Graham
Browse files

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

Thanks outofculture at gmail.com for the suggestion.

Backport of cbf08c6b from master
parent e4274e3d
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -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``
---------------

+6 −0
Original line number Diff line number Diff line
@@ -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
~~~~~~~

+11 −0
Original line number Diff line number Diff line
@@ -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
==============