int pageSize = 36;
int pageIndex=1;
IMultiQuery multiQuery = _session.CreateMultiQuery();
multiQuery
.Add(session.CreateQuery("select * from Smart_Products where " + where + " order by " + orderBy)
.SetFirstResult((pageIndex - 1) * pageSize)
.SetMaxResults(pageSize))
.Add(session.CreateQuery("select count(*) c from Smart_Products where " + where))
.SetInt32("BrandId", brandId)
.SetInt32("Flag", flag)
.SetInt32("Status", 1);
if (categoryId > 0)
{
multiQuery.SetInt32("CategoryId", categoryId);
}
IList results = multiQuery.List();
foreach (var o in (IList)results[0])
products.Add((ProductInfo)o);
long count = (long)((IList)results[1])[0];
对大数据(例如,所有行数为 1000000 行)进行分页时,相同的查询可以快速获得结果,但小数据(例如,所有行数为 5 行)速度较慢。
但是我使用 sql profiler 来跟踪查询,并复制查询在 msms 中执行它非常快地使用 50ms 获取数据,但是当小数据花费 10s 甚至超时时使用 nhibernate 列出数据,我尝试了一些发布的方法该站点,清除缓存和使用无状态会话都没有得到消息。任何人都知道如何改进它。非常感谢。