这是使用Fluent NHibernate完成的。
我有一个NHibernate查找,从一张表中检索数据。如果我将生成的SQL通过查询分析器运行,它需要大约18毫秒才能运行。
使用NHProfiler,我得到了这个查询的持续时间为约1800毫秒 - 比SQL慢100倍!
Query duration
- Database only:1800ms
- Total: 1806ms
正在填充的对象包含一个子类,但是这个子类是从NHibernate第二级缓存中加载的。
返回的数据是分页的(每次查询50条),尽管据我所知,这不会产生任何影响。
我还在运行计数器,同样,在查询分析器中需要大约4毫秒,而根据NHProfiler需要大约1800毫秒。
NH Profiler显示的是查询执行时间还是检索、映射类和构造对象图的完整时间?如果是前者,为什么要比直接运行查询花费更长的时间?
编辑:刚刚发现Ayende关于NH Profiler中Query Duration值的帖子:http://ayende.com/Blog/archive/2009/06/28/nh-prof-query-duration.aspx - 因此,确实是查询数据库花费了很长时间。