day 55 ajax

♀尐吖头ヾ 提交于 2019-12-06 02:51:23

only与defer

only括号内放字段 查询结果是一个列表套一个个的数据对象
这些数据对象点括号内的字段属性不会再查询数据库 直接就是对象获取属性
也支持点击括号内没有的字段 但是每点击一次就会重新走一次数据库查询 效率极低

defer与only是互为反操作
defer括号内放什么字段 查询出来的对象就没有该字段属性
如果你要点击 每点击一次就要重新走一次数据
而你如果点击了非括号内的字段不会走数据库 仅仅是对象属性的操作

 

select_related与prefetch_related

select_related与prefetch_related
select_related括号内只能放外键字段 并且外键字段的类型只能是一对多 或者 一对一 不能是多对多
内部是自动连表操作 会将括号内外键字段所关联的表 与当前表自动拼接成一张表
然后将表中的数据一个个查询出来封装成一个个的对象
这样做的好处就在于跨表也不需要重复的走数据库了 减轻数据库的压力
select_related括号内可以放多个外键字段 都号隔开 会将多个外键字段关联的表与当前表全部拼成一张大表
耗时:数据库层面需要先连表

 

prefetch_related内部是子查询
会自动帮你按步骤查询多张表 然后将查询的结果封装到对象中
给用户的感觉好像还是连表操作
括号内支持传多个外键字段 并且没有类型限制
特点:每放一个外键字段 就会多走一条sql语句 多查询一张表
耗时:查询的次数长

 

两者之间的优缺点
结合实际情况 表的大小
两张表都特别大的情况下 连表操作 可能耗时更多

 

 

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