1
在django中對外鍵實體進行反向查詢的更快方法是什麼?外鍵快速反向查找django
是否
query_set = MyModel.objects.filter(ForeignModel=ForeignModelObject)
或
ForeignModelObject.mymodel_set.all()
當來到一個大組記錄,其中上述建議? 正在使用Mysql
在django中對外鍵實體進行反向查詢的更快方法是什麼?外鍵快速反向查找django
是否
query_set = MyModel.objects.filter(ForeignModel=ForeignModelObject)
或
ForeignModelObject.mymodel_set.all()
當來到一個大組記錄,其中上述建議? 正在使用Mysql
第二個無疑是更快。但那是因爲他們根本沒有做同樣的事情。
第一個查詢的意思是「給我所有MyModel與任何ForeignModel有關的參數爲'something'」。
第二種意思是「給定這個ForeignModel實例,給我所有相關的MyModel」。
因此,如果有多個具有該參數的ForeignModel,它們可能會給出非常不同的結果。結果,第二個查詢不需要執行JOIN,所以MyModel表上的基本查詢是第一個查詢,而第一個查詢涉及模型之間的JOIN。
我的意思是這兩個查詢意味着同樣的事情。編輯了這個問題 – 2015-02-09 20:48:12