django模型层优化(关联对象) 懒加载和预加载 +长链接

懒加载

存在于外键和多对多关系
不检索关联对象的数据
调用关联对象会再次查询数据库

问题根源

查看django orm的数据加载,两次. 查询user,查询menu

预加载的方法

预加载单个关联对象--select_related
!!!预加载多个关联对象--prefetch_related

性能对比:测试时 预加载快了三倍左右

# 懒加载
def lazy_load():
for user in User.objects.all():
print(user.menu.all())

# 预加载
def pre_load():
for user in User.objects.prefetch_related('menu'):
print(user.menu.all())

django-debug-toolbar

https://www.cnblogs.com/liwenzhou/p/9245507.html

长链接

尽少的链接次数,集中查询

因为创建和关闭链接的时间和单词查询的时间类似,一开一关大大浪费性能

上一篇:[UIKit学习]06.懒加载,模型,自定义代码段,重写构造方法


下一篇:解读CSS的背景(background)样式