如何使用nhibernate通过递归自连接SQL获得最佳性能

时间:2011-01-03 13:08:29

标签: c# sql-server nhibernate

我有一个带有parentId的Team表/实体,这是一个自我加入同一个表的id。

有一个名为TopUnit的属性会递归地继续调用.Parent,直到它在Team实体上找到一个名为“IsTopUnit”的属性

使用nhibernate探查器现在会导致选择N + 1警报。无论如何都要优化本质上是一个递归自连接查询以避免选择N + 1行为。

batchsize似乎适用于子集合,但在这种情况下似乎并没有帮助,因为它不是一个“同步”,因为我不能做一个递归的SQL语句。

我想这个问题在nhibernate之外也是有效的。在SQL中执行递归语句的最佳方法是什么。看起来你不得不把它分解成多个查询。