1. 程式人生 > >Django-數據庫訪問優化

Django-數據庫訪問優化

pytho and internal blog mode 多對多 數據庫訪問 postgres 我們

數據庫訪問優化

使用標準數據庫優化技巧

  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-數據庫訪問優化