2015-02-09 85 views
1

在django中對外鍵實體進行反向查詢的更快方法是什麼?外鍵快速反向查找django

是否

query_set = MyModel.objects.filter(ForeignModel=ForeignModelObject) 

ForeignModelObject.mymodel_set.all() 

當來到一個大組記錄,其中上述建議? 正在使用Mysql

回答

0

第二個無疑是更快。但那是因爲他們根本沒有做同樣的事情。

第一個查詢的意思是「給我所有MyModel與任何ForeignModel有關的參數爲'something'」。

第二種意思是「給定這個ForeignModel實例,給我所有相關的MyModel」。

因此,如果有多個具有該參數的ForeignModel,它們可能會給出非常不同的結果。結果,第二個查詢不需要執行JOIN,所以MyModel表上的基本查詢是第一個查詢,而第一個查詢涉及模型之間的JOIN。

+0

我的意思是這兩個查詢意味着同樣的事情。編輯了這個問題 – 2015-02-09 20:48:12