gpt4 book ai didi

python - 在 django get/filter 查询中,参数的顺序重要吗?

转载 作者:太空宇宙 更新时间:2023-11-03 18:39:47 26 4
gpt4 key购买 nike

我有一个关于优化 Django 中的获取和过滤器的问题。我认为我的预感是正确的,但我找不到任何确认。

当对 get()filter() 查询应用多个约束,并且这些约束中的一个或多个约束位于外键或 m2m 对象上时,约束的顺序对效率很重要吗?示例语句,查找名字为 Bob 且父亲的名字也是 Bob 的 child :如果 Django 首先检查每个 child 的名字是否为“Bob”,那么效率会更高,如果不是,则不会费心检查父亲的名字姓名。我可以做出稍微不同的查询,如下所示: Child.objects.filter(name="Bob",father__name="Bob")Child.objects.filter(father__name="Bob",名称=“鲍勃”)

所以,我的问题是,Django 是否以有效的方式运行,仅在本地值已经匹配时才遵循外键?基本上,这是我能想到的三种可能性:

  • 无论参数顺序如何,都能高效处理所有查询?
  • 按照给出参数的顺序高效地进行查询?
  • 在无查询的情况下高效地检查所有组件并遵循所有外键(无论顺序如何)?
  • 在某些数据库上高效,在其他数据库上效率不高,具体取决于每个引擎的能力?

谢谢!

最佳答案

您建议的性能优化是数据库引擎的任务。 Django 将发送一个查询,数据库将充分利用它。以下似乎有一些有关 MySQL 对查询执行的操作的详细信息:https://www.informit.com/articles/article.aspx?p=377652&seqNum=2

如果您有大量数据,找出是否存在差异的最佳方法就是对其进行测量。如果您没有足够的数据来进行有意义的测量,那么结果并不重要。

关于python - 在 django get/filter 查询中,参数的顺序重要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20763522/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com