python - ORM 查询

1. 正常查询:    ## 效率低,因为每次查询都是查询表和关联表的所有数据
ret = User.objects.all()
for item in ret:
    print(item.name,item.dp.title)

2. seleted_related -- 主动做连表查询 (1次连表)
ret = User.objects.all().seleted_related('dp')
for item in ret:
    print(item.name,item.dp.title)
问题:如果连表过多,性能只会越来越差
3. prefetch_related -- 2次单表查询 # 第一次 : select * from user; # 通过 python 代码获取:dp_id = [1,2]; # 第二次 : select * from depart where id in dp_id; ret = User.objects.all().prefetch_related('dp') for item in ret: print(item.name,item.dp.title)

猜你喜欢

转载自www.cnblogs.com/chaoqi/p/10446710.html
今日推荐