Почему NHibernate PrepareQuery занимает так много времени? - PullRequest
1 голос
/ 18 декабря 2011

Я использую метод NHibernate Session.Query () для получения данных из базы данных sql.Недавно я заметил, что запрос занимает более 1000 мс!Используя профилировщик, я обнаружил, что это время в основном тратится в NHibernate.Linq.DefaultQueryProvider.PrepareQuery () (70%), а реальный запрос занимает всего 300 мс.Запрос выглядит следующим образом:

var q = session.Query<Answer>().
        Where(a => a.User.IsExpert);

И в результате sql выглядит так:

select answer0_.ID          as ID0_,
   answer0_.TotalAnswer as TotalAns2_0_,
   answer0_.Rating0     as Rating3_0_,
   answer0_.Rating1     as Rating4_0_,
   answer0_.Rating2     as Rating5_0_,
   answer0_.Rating3     as Rating6_0_,
   answer0_.caseID      as caseID0_,
   answer0_.userid      as userid0_
from   Answer answer0_
   inner join Users user1_
     on answer0_.userid = user1_.ID
where  user1_.IsExpert = 1

Есть идеи, как ускорить вызов PrepareQuery?

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