QuerySet和Limit

时间:2014-10-01 09:04:56

标签: python django django-queryset

我正在学习Django,我对查询集性能有疑问。 是这样的代码:

Model.objects.filter('premmium' = True)[:20]

它是否等同于SQL查询:

SELECT * FROM `Model` WHERE `premmium` = True LIMIT 20;

或者只是一个:

SELECT * FROM `Model` WHERE `premmium` = True; 

然后只从所有人那里拿走了20个元素?

1 个答案:

答案 0 :(得分:1)

请参阅https://docs.djangoproject.com/en/dev/topics/db/queries/#limiting-querysets

相当于

SELECT * FROM `Model` WHERE `premmium` = True LIMIT 20;

但是,值得注意的是,使用这样的切片并不总是最有效的查询方式,因为结果的缓存方式(参见here)。通常,如果数据集不是很大,那么在python中进行切片会更有效:

list(Model.objects.filter('premmium' = True))[:20]