Как добиться оптимальной производительности с помощью рекурсивного самообъединения SQL с помощью nhibernate - PullRequest
2 голосов
/ 03 января 2011

У меня есть таблица / сущность Team с parentId, который является идентификатором, который сам присоединился к той же таблице.

Существует свойство TopUnit, которое рекурсивно будет продолжать вызывать .Parent, пока не найдет атрибут в сущности Team с именем "IsTopUnit"

с помощью профилировщика nhibernate теперь это вызывает предупреждение Select N + 1. в любом случае можно оптимизировать то, что по сути является рекурсивным запросом на самообъединение, чтобы избежать поведения Select N + 1.

batchsize, кажется, работает для дочерних коллекций, но, похоже, в этом случае не помогает, так как все это "синхронно", так как я не могу выполнить рекурсивный SQL-оператор.

Полагаю, этот вопрос действителен и вне nhibernate. Каков наилучший способ сделать рекурсивные операторы в SQL. похоже, вам придется разбить его на несколько запросов.

1 Ответ

1 голос
/ 04 января 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...