ORM 效率补充

[亡魂溺海] 提交于 2019-11-30 03:44:25

1、only  defer  

only: 获取数据表中某列或多列的值,注意获取的是对象

defer: 获取除了某列或某几列的数据,注意获取的是对象

User.objects.values('id', 'name')
User.objects.values_list('id', 'name')

ret = User.objects.only('id', 'name')
for i in ret:
    print(i.id, i.nme)

2、selected_related

进行跨表查询的时候,会先进行连表

# 查询用户的姓名和部门名称,先链表再查询
result = User.objects.all().seleted_related('dp')
for item in result:
    print(item.name,item.dp.title)

多用于 one2one 或 foreginkey

缺点:链表次数过多,反而会减低查询效率

3、perfecth_related

进行来两次查询,先查询一次,再查询和要查询数据有关的数据

result = User.objects.all().prefetch_related('dp')
for item in result:
    print(item.name,item.dp.title)

多用于 mang2many

4、外键产生的原因

节约硬盘空间

当数据量比较大的时候,不要使用外键,允许数据出现冗余

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!