summaryrefslogtreecommitdiff
path: root/docs/topics/db/optimization.txt
diff options
context:
space:
mode:
authorAlex Gaynor <alex.gaynor@gmail.com>2011-09-09 19:22:28 +0000
committerAlex Gaynor <alex.gaynor@gmail.com>2011-09-09 19:22:28 +0000
commit7deb25b8dd5aa1ed02b5e30cbc67cd1fb0c3d6e6 (patch)
tree09ed3208f309d71b5710b8287bccdb92ddf40c58 /docs/topics/db/optimization.txt
parente55bbf4c3c42b17d52c21bc3a460b4981fdc190c (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.txt30
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.