0
我有以下型號:如何在Django中優化此order_by查詢?
class Movie(models.Model):
item = models.OneToOneField(Item, primary_key=True)
class Item(models.Model):
...
class Popularity(models.Model):
item = models.OneToOneField(Item, primary_key=True)
today = models.IntegerField(default=0, db_index=True)
我想執行以下查詢:
movies = Movie.objects.order_by('-item__popularity__today') \
.values(...)
paginator = Paginator(movies, 12)
然而,與數據庫中的大約52000行,這需要500-700ms運行。有什麼辦法可以讓這個更快嗎?我想要做的是獲得數據庫中最流行的12部電影。
嘗試[限制](https://docs.djangoproject.com/en/dev/topics/db/queries/#limiting-querysets)將QuerySet設置爲12個元素。 – Salem
'today'字段如何工作?如果它基本上是一個布爾值,你應該能夠首先過濾查詢集,例如:Movie.objects.filter('item__popularity__today'= 1)'如果不是,可能還有另一種方法來先過濾它('item__popularity__today__gt'= 0',也許?) – Hannele
如果直接對數據庫運行結果查詢,需要多長時間? –