diff options
| author | Alex Gaynor <alex.gaynor@gmail.com> | 2011-09-09 19:22:28 +0000 |
|---|---|---|
| committer | Alex Gaynor <alex.gaynor@gmail.com> | 2011-09-09 19:22:28 +0000 |
| commit | 7deb25b8dd5aa1ed02b5e30cbc67cd1fb0c3d6e6 (patch) | |
| tree | 09ed3208f309d71b5710b8287bccdb92ddf40c58 /docs/topics/db/optimization.txt | |
| parent | e55bbf4c3c42b17d52c21bc3a460b4981fdc190c (diff) | |
Fixed #7596. Added Model.objects.bulk_create, and make use of it in several places. This provides a performance benefit when inserting multiple objects. THanks to Russ for the review, and Simon Meers for the MySQl implementation.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@16739 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'docs/topics/db/optimization.txt')
| -rw-r--r-- | docs/topics/db/optimization.txt | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/docs/topics/db/optimization.txt b/docs/topics/db/optimization.txt index 265ef55fae..5093917b61 100644 --- a/docs/topics/db/optimization.txt +++ b/docs/topics/db/optimization.txt @@ -268,3 +268,33 @@ instead of:: entry.blog.id +Insert in bulk +============== + +When creating objects, where possible, use the +:meth:`~django.db.models.query.QuerySet.bulk_create()` method to reduce the +number of SQL queries. For example:: + + Entry.objects.bulk_create([ + Entry(headline="Python 3.0 Released"), + Entry(headline="Python 3.1 Planned") + ]) + +Is preferable to:: + + Entry.objects.create(headline="Python 3.0 Released") + Entry.objects.create(headline="Python 3.1 Planned") + +Note that there are a number of :meth:`caveats to this method +<django.db.models.query.QuerySet.bulk_create>`, make sure it is appropriate for +your use case. This also applies to :class:`ManyToManyFields +<django.db.models.ManyToManyField>`, doing:: + + my_band.members.add(me, my_friend) + +Is preferable to:: + + my_band.members.add(me) + my_band.members.add(my_friend) + +Where ``Bands`` and ``Artists`` have a many-to-many relationship. |
