一个双向Doctrine2关系是否比两个单向关系性能更差?

时间:2018-05-08 11:42:28

标签: database doctrine-orm orm relationship bidirectional

与Doctrine2最佳做法相关:https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/best-practices.html

与该帖子相关:Why is it recommended to avoid bidirectional relations in ORM?

我需要了解两个单向关系是否影响性能,一个双向关系,或更少,或更多。

由于两种类型的关系都会产生相同的SQL,因此性能问题似乎与水化,持久性和DQL查询有关。

像这里解释的那样:https://ocramius.github.io/blog/doctrine-orm-optimization-hydration/

1 个答案:

答案 0 :(得分:0)

首先,重要的是要理解性能问题发生在PHP端而不是DBMS端。

双向关系引起的性能问题主要与两点有关:

  • 模型变量的水化过程
  • 使用许多JOIN子句进行DQL查询

所以问题的答案是否定的。即使您可以通过一个双向关系实现相同的事物而不是使用两个单向关系,但由于水化过程的优化,使用一个双向关系会更加高效。