[英]Iteration vs order_by() efficiency
我试图从查询集中找到成本最高的项目,我只是想知道以下哪一项(如果有的话)效率更高
items = Item.objects.all()
highest_cost = max(item.cost for item in items)
#Or
highest_cost = items.order_by('-cost')[0].cost
我不是非常关心表现,我只是好奇。
首先,您可以简单地使用django的Max
聚合 。
items = Item.objects.all()
items.aggregate(Max('cost'))
其次,你的问题的答案取决于各种因素。 例如,如果表格非常大(许多记录,或特别大的记录),您将需要避免检索所有这些,只需要一个(第一个查询)。 但是,如果表中有数百万条记录,并且您订购的列上没有索引,则排序可能非常慢(O(nlogn)),而查找最大值为O(n)。
但是,在大多数情况下,让DB服务器完成工作(在您的示例中,使用order by
)应该更快。
order_by要快得多,特别是如果数据库中有很多条目。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.