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