一个双向 Doctrine2 关系的性能是否低于两个单向关系?
Is one bidirectional Doctrine2 relationship less performant than two unidirectionals relationships?
与 Doctrine2 最佳实践相关:https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/best-practices.html
并与之相关 post : Why is it recommended to avoid bidirectional relations in ORM?
我需要了解两种单向关系对性能的影响是否与一种双向关系一样大,或更小,或更大。
由于两种类型的关系导致相同的 SQL,性能问题似乎与水合作用、持久性和 DQL 查询有关。
就像这里解释的那样:https://ocramius.github.io/blog/doctrine-orm-optimization-hydration/
首先,了解性能问题发生在 PHP 端而不是 DBMS 端很重要。
双向关系导致的性能问题主要与两点有关:
- 模型变量的水化过程
- 具有许多 JOIN 子句的 DQL 查询
所以问题的答案是否定的。即使你可以用一个双向关系实现与用两个单向关系实现的相同的事情,但由于水合过程的优化,使用一个双向关系的性能更高。
与 Doctrine2 最佳实践相关:https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/best-practices.html
并与之相关 post : Why is it recommended to avoid bidirectional relations in ORM?
我需要了解两种单向关系对性能的影响是否与一种双向关系一样大,或更小,或更大。
由于两种类型的关系导致相同的 SQL,性能问题似乎与水合作用、持久性和 DQL 查询有关。
就像这里解释的那样:https://ocramius.github.io/blog/doctrine-orm-optimization-hydration/
首先,了解性能问题发生在 PHP 端而不是 DBMS 端很重要。
双向关系导致的性能问题主要与两点有关:
- 模型变量的水化过程
- 具有许多 JOIN 子句的 DQL 查询
所以问题的答案是否定的。即使你可以用一个双向关系实现与用两个单向关系实现的相同的事情,但由于水合过程的优化,使用一个双向关系的性能更高。