情况是这样的,
1, Asp.net2.0程序
2, 分别使用Admin和普通用户(user1)登陆,进行同样的操作,访问一个员工的数据,
3, Admin帐号打开页面的时间是User1打开页面时间的好几倍.问题分析过程,
1, 跟踪发现,同样是NHibernate的List<>()的操作,Admin帐号登陆时花的时间是用User1帐号登陆时花得时间的几百倍.
2, 而且,不是某个查询,而是所有的查询都这样. NHibernate的List<>()的操作 有时(admin登陆时)花得时间很长.有时很短.
3, 根据SQL Profile, 执行SQL语句的时间是一样的.
4, 所以,可以确定是NHibernate加载完数据据后的操作花的时间不同.
5, Admin登陆和User1登陆时的区别: Admin会加载更多的数据,比如部门信息, Admin登陆时加载所有的, User1登陆时只加载本部门. PS:
员工数据的字段非常多
员工表有大量的子表,但都是Lazy的.
部门有Parent,所以是树型结构.
 
我的问题是:
1, 是什么导致NHibernate的 List<>()操作速度慢.2, 如何调试和分析解决这样的问题.