我试图找到一个查询集最高成本项目,我只是想知道以下哪些(如果任一)为更有效迭代VS ORDER_BY()效率
items = Item.objects.all()
highest_cost = max(item.cost for item in items)
#Or
highest_cost = items.order_by('-cost')[0].cost
我不是超级关注表现,我只是好奇而已。
我试图找到一个查询集最高成本项目,我只是想知道以下哪些(如果任一)为更有效迭代VS ORDER_BY()效率
items = Item.objects.all()
highest_cost = max(item.cost for item in items)
#Or
highest_cost = items.order_by('-cost')[0].cost
我不是超级关注表现,我只是好奇而已。
首先,你可以简单地使用Django的Max
aggregation。
items = Item.objects.all()
items.aggregate(Max('cost'))
其次,你的问题的答案取决于各种因素。例如。如果表格非常大(很多记录或特别大的记录),则需要避免在仅需要一个(第一个查询)的情况下检索它们。但是,如果表中有数百万条记录,并且按顺序排列的列没有索引,排序可能非常慢(O(nlogn)),而查找最大值为O(n)。
在大多数情况下,然而,让DB服务器做的工作(在你的榜样,用order by
)应该会更快。
ORDER_BY的速度要快得多,特别是如果你在数据库中的条目。
我相信这倒到在你的数据库等项目的ammount的,你随时可以测试和检查时间。 – petkostas