Django中ORM的优化
1.
exists( ) 什么时候用
count( ) 和 len( )什么时候合适,
用values( )或values_list( )只取需要的列的数据
iterator()对数据对象生成迭代器,用一条取一条
2.涉及关联查询的时候:
select_related( ):
直接通过SQL语句把关联的表通过join一起取出来。
prefetch_related( ):
把关联的表分别单独取出来,然后用Python进行join。
3.
Use QuerySet.defer() and only()
4.批量创建数据
bulk_create()
总结
ORM 的使用并没有固定的标准。对于小的应用来说,优化可能并没有多么明显的效果。应该以代码清晰为优先,然后在考虑优化的事情。程序增长过程中,对 ORM 的使用一定要保持好的习惯。养成对资源消耗敏感的习惯,以后会有很多好处。
优化的方法很多,对于长远来说了解一些原则更为实用
习惯隔离代码并记录产生的查询
不要在循环中查询
了解 ORM 是怎么缓存数据的
知道 Django 何时会做查询
不要以牺牲清晰度为代价过度优化
附:
Django的orm官方说明文档:
https://docs.djangoproject.com/en/1.10/topics/db/optimization/#retrieve-everything-at-once-if-you-know-you-will-need-it