Django-數據庫訪問優化
阿新 • • 發佈:2017-10-27
pytho and internal blog mode 多對多 數據庫訪問 postgres 我們
數據庫訪問優化
使用標準數據庫優化技巧
- 索引。我們可以使用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-數據庫訪問優化