【问题标题】:Which is more efficient filter query in django and why?django 中哪个过滤器查询更有效,为什么?
【发布时间】:2021-08-03 10:42:50
【问题描述】:

1:Model1.object.filter(column1="XYZ").filter(column2="ABC")

2:Model1.object.filter(column1="XYX", column2="ABC")

在这两者中,在时间和数据库调用次数方面哪个更有效?

【问题讨论】:

  • 两者都会产生same查询,所以效率上没有区别。

标签: python django django-models django-rest-framework


【解决方案1】:

在这两者中,在时间和数据库调用次数方面哪个更有效?

两者都会产生 same 查询,除非column1 是一对多或多对多字段,但它不是模型对象的列。两者都会产生如下查询:

SELECT appname_model1.*
FROM appname_model1
WHERE column1 = "XYZ" AND column2 = "ABC"

第二个项目的效率可能会稍微高一些,因为它会评估对过滤器方法的两次调用,但这只是几个 CPU 周期的问题。

【讨论】:

    【解决方案2】:

    您可以使用QuerySet API 查看生成的实际 sql 查询:

    print(Model1.object.filter(column1="XYZ").filter(column2="ABC").query)
    
    print(Model1.object.filter(column1="XYX", column2="ABC").query)
    

    你会发现查询是一样的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-26
      • 2021-08-13
      • 2021-11-25
      • 2012-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多