sql-server - select N + 1 比 eager join 更好吗?

标签 sql-server nhibernate

我正在使用 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/

相关文章:

c# - 是否有更优雅的形式将 NULL 分配给 InsertCommand 的 NVarChar?

c# - ASP 应用程序导致错误 500 并导致服务器频繁停止

nhibernate - 流利的 NHibernate 和 PostgreSQL,SchemaMetadataUpdater.QuoteTableAndColumns - System.NotSupportedException : Specified method is not supported

sql - 简单的更新查询花费的时间太长

sql-server - 我真的需要使用 "SET XACT_ABORT ON"吗?

hibernate - NHibernate 中按绝对值排序

.net - 我们应该对数据库进行反规范化以提高性能吗?

带有命名参数的 nhibernate hql

sql - 选择列表中的列无效,因为它未包含在聚合函数或 GROUP BY 子句中

nhibernate - 复合 id 中的枚举 - 流畅的 NHibernate 1.2