gpt4 book ai didi

database - ORM(对象关系映射)中的 "N+1 selects problem"是什么?

转载 作者:行者123 更新时间:2023-12-02 17:00:14 38 4
gpt4 key购买 nike

“N+1 选择问题”通常被认为是对象关系映射 (ORM) 讨论中的一个问题,我理解这与必须对看似简单的事情进行大量数据库查询有关在对象世界中。

有人对这个问题有更详细的解释吗?

最佳答案

假设您有一个 Car 对象(数据库行)的集合,并且每个 Car 都有一个 Wheel 对象(也是行)的集合)。换句话说,CarWheel 是一对多的关系。

现在,假设您需要迭代所有汽车,并为每一辆汽车打印出车轮列表。简单的 O/R 实现将执行以下操作:

SELECT * FROM Cars;

然后对于每辆汽车:

SELECT * FROM Wheel WHERE CarId = ?

换句话说,您可以选择一个汽车,然后再选择 N 个附加选项,其中 N 是汽车总数。

或者,可以获取所有轮子并在内存中执行查找:

SELECT * FROM Wheel;

这将数据库的往返次数从 N+1 减少到 2。大多数 ORM 工具都为您提供了多种方法来防止 N+1 选择。

引用: Java Persistence with Hibernate ,第 13 章。

关于database - ORM(对象关系映射)中的 "N+1 selects problem"是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/97197/

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