Django-数据库访问优化

Posted Richie Wen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django-数据库访问优化相关的知识,希望对你有一定的参考价值。

数据库访问优化

使用标准数据库优化技巧

  1. 索引。我们可以使用Field.db_index或者Meta.index_together在Django中添加索引,优先向经常使用filter(),exclude(),order_b()等查询的字段添加索引,帮助我们更快的查找。
  2. 合理使用字段类型

 

了解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_savepost_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 中显示编程片段的代码块?

Django之ORM性能优化建议

优化 C# 代码片段、ObservableCollection 和 AddRange

django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段

使用 C++ 反转句子中的每个单词需要对我的代码片段进行代码优化

django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段