簡體   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