我正在使用 nhibernate profiler,并看到它在一些地方向我发出“Select n + 1”警告。
明显的解决方法是进行一些预先的急切连接,但这让我思考,在某些情况下,与执行可能会加载大量您从未实际使用的数据的连接相比,使用 Select N + 1 是否实际上更简单或更快.
最佳答案
你的想法是正确的。例如,在某些情况下,所有根实体都引用另一个实体的一个或两个实例。进行 2 或 3 个小选择而不是非规范化选择(即使用连接)可能会更快
有一种方法可以在几乎所有情况下使这一点变得方便:batch-size
。如果您在实体和集合中将此属性设置为通常的页面大小,您将获得恒定数量的小选择(每种实体类型一个)。
关于sql-server - select N + 1 比 eager join 更好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4582214/