从模型中获取所有最新的()

时间:2014-10-06 20:33:42

标签: django postgresql optimization

这是我的结构的伪视图:

Offer [id, match]
    - Odds [id, offer_id, time)
    - Odds [id, offer_id, time)
    - .....

要根据time属性获取最新对象,我只需执行someOffer.latest()。我的问题是在多个优惠上查询latest()。我开始去[offer.odds.latest() for o in Offer.objects.filter....] - 这显然是太多的查询,因此非常慢。然后我构建了这个查询

Odds.objects.annotate(max_time=Max('offer__odds__time')).filter(time=F('max_time'))

这要快得多。然而,在大量赔率(> 100,000)上,这是非常非常慢的。有没有人有一个很好的方法来获取所有“最新”的多个对象?

非常感谢,

0 个答案:

没有答案