阅读:38
def select_related(self, *fields):
性能相关: 表之间进行join 连表操作, 一次性获取关联的数据。
总结:
1. select_related 主要针对一对一 和 多对一关系进行优化。
2. select_related 使用 SQL的join 语句进行优化, 通过减少SQ语句的查询的次数来进行优化, 提高性能。
def prefetch_related(self, *lookups):
性能相关: 多表连表操作时速度会慢,使用其执行多次SQL 查询在Python 代码中实现连表操作。
总结:
1. 对于多对多字段 (ManyToManyField) 和 一对多字段,可以使用prefetch_related() 进行优化。
2. prefetch_related() 的优化方式是分贝查询内阁表,然后用Python 处理他们之间的关系。
- 当用户在浏览器中输入url , 浏览器会生成请求头和请求体发给服务端。
请求头和请求体中会包含浏览器的动作(action), 这个动作通常为get 或者 post , 体现在url 中 。- url 经过Django 中的wsgi, 再经过Django的中间件, 最后url 到过路由映射表,在路由中一条一条进行匹配, 一旦其中一条匹配成功就执行对应的视图函数,后面的路由就不再继续匹配了。
3.视图函数根据客户端的请求查询相应的数据, 返回给Django , 然后Django 把客户端想要的数据作为一个字符串返回给客户端。- 客户端浏览器接收到返回的数据, 经过渲染后显示给用户。