Django-数据库访问优化
Posted Richie Wen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django-数据库访问优化相关的知识,希望对你有一定的参考价值。
数据库访问优化
使用标准数据库优化技巧
- 索引。我们可以使用Field.db_index或者Meta.index_together在Django中添加索引,优先向经常使用filter(),exclude(),order_b()等查询的字段添加索引,帮助我们更快的查找。
- 合理使用字段类型
了解QuerySets
在数据库中而不是python中做数据工作
用唯一的被索引的列来检索独立对象
一次性检索你需要的任何东西
不要检索你不需要的东西
批量插入
创建对象的时候,尽可能使用bulk_create()来减少SQL查询的数量。此方法以高效的方式(通常只有1个查询,无论有多少对象)将提供的对象列表插入到数据库中:,例如:
Entry.objects.bulk_create([ Entry(headline=‘This is a test‘), Entry(headline=‘This is only a test‘), ])
优于:
Entry.objects.create(headline=‘This is a test‘) Entry.objects.create(headline=‘This is only a test‘)
- 将不会调用模型的
save()
方法,并且不会发送pre_save
和post_save
信号。 - 它不适用于多表继承场景中的子模型。
- 如果模型的主键是
AutoField
,则不会像save()
那样检索并设置主键属性,除非数据库后端支持(当前是PostgreSQL)。 - 它不适用于多对多关系。
这也可以用在ManyToManyField中,所以:
my_band.members.add(me, my_friend)
优于
my_band.members.add(me)
my_band.members.add(my_friend)
以上是关于Django-数据库访问优化的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Django Summernote 中显示编程片段的代码块?
优化 C# 代码片段、ObservableCollection 和 AddRange
django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段
使用 C++ 反转句子中的每个单词需要对我的代码片段进行代码优化
django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段