Fixed #29685 -- Added QuerySet.explain() to the database optimization docs.

This commit is contained in:
Tom Forbes 2018-08-18 14:22:21 +01:00 committed by Tim Graham
parent 838d6dcb86
commit b042ab8976
1 changed files with 11 additions and 2 deletions

View File

@ -11,8 +11,9 @@ Profile first
=============
As general programming practice, this goes without saying. Find out :ref:`what
queries you are doing and what they are costing you
<faq-see-raw-sql-queries>`. You may also want to use an external project like
queries you are doing and what they are costing you <faq-see-raw-sql-queries>`.
Use :meth:`.QuerySet.explain` to understand how specific ``QuerySet``\s are
executed by your database. You may also want to use an external project like
django-debug-toolbar_, or a tool that monitors your database directly.
Remember that you may be optimizing for speed or memory or both, depending on
@ -114,6 +115,14 @@ When you have a lot of objects, the caching behavior of the ``QuerySet`` can
cause a large amount of memory to be used. In this case,
:meth:`~django.db.models.query.QuerySet.iterator()` may help.
Use ``explain()``
-----------------
:meth:`.QuerySet.explain` gives you detailed information about how the database
executes a query, including indexes and joins that are used. These details may
help you find queries that could be rewritten more efficiently, or identify
indexes that could be added to improve performance.
Do database work in the database rather than in Python
======================================================