我已經讀過了distinct()API調用有時會遇到一些性能問題。我想嘗試通過orm重寫一個查詢,避免使用不同的(至少配置文件的差異)。Django使用Annotate而不是Distinct()
我的理解是values()在底層執行Group By。但是,當我測試兩種方法時,根據我使用distinct()還是values()/ annotate(),對象的Count是不同的。
zip_codes = Location.objects.values('zip_code').annotate(zip_count=Count('zip_code')).exclude(zip_code=None).count()
VS.
zip_codes = Location.objects.values_list('zip_code', flat=True).exclude(zip_code=None).distinct()
這裏有什麼不對嗎?
謝謝!
嘿約翰,我實際上結束了測試distinct()vs.值,註解方法和不同的贏。閱讀起來也很容易。我同意你所說的一切,謝謝。 – Ben