繁体   English   中英

迭代与order_by()效率

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM