常有人拿SQL和Django的ORM查询对比(即QuerySet),总说QuerySet执行效率慢。呵呵,QuerySet只不过是多了一个解析步骤而已。实际执行效率快慢和你写的QuerySet查询有关系。正如不同的SQL语句也有执行效率快慢问题。
1、简单的QuerySet查询
一般简单的QuerySet查询没什么需要优化的。有关QuerySet基础可参考:QuerySet查询基础。简单的QuerySet通常是在一个表上的查询,尽量避免使用__in条件即可。该__in对应SQL语句的in条件,这种类型的条件判断执行效率较慢。若in条件的值比较少,建议使用or逻辑合并条件。例如:
qs = Blog.objects.filter(id__in=[1, 5, 20])
可修改为如下两种写法:
# 方法1:直接合并
qs …