0
我有一個Django模型限定相片:成形Django的查詢集爲一個一對多關係
class Pic(models.Model):
image = models.ImageField(upload_to=upload_pic_to_location, storage=OverwriteStorage())
owner = models.ForeignKey(User)
upload_time = models.DateTimeField(db_index=True, auto_now_add=True)
而另一個定義消息上面的照片可以被髮送爲:
class PicMessage(models.Model):
which_pic = models.ForeignKey(Pic)
sending_time = models.DateTimeField(auto_now_add=True)
即相同的圖片可以作爲不同的消息多次發送。什麼是最有效的方式來找到最近PicMessage
由給定user
發送?
我想這一點:PicMessage.objects.filter(which_pic__in=Pic.objects.filter(owner=self.request.user)).latest('sending_time')
快速的問題:將做'最新的( 'sending_time')'相當於性能明智的做'ORDER_BY( ' - sending_time')第一。 ()'? –
我相信他們導致相同的SQL,如果你擔心要優化數據庫性能,你需要啓用SQL日誌,然後使用EXPLAIN sql語法來查看你的數據庫索引是否被這些查詢使用等等。轉換爲2個簡單的SQL查詢,我的翻譯爲單一但加入。哪一個運行速度更快,需要分析您的特定數據。 – serg