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プロファイラーを使用してクエリをトレースし、クエリをコピーしてmsmsで実行し、50ミリ秒を使用して非常に高速にデータを取得しますが、nhibernateを使用して、小さなデータのコストが10秒でもタイムアウトする場合にデータをリストします。投稿するいくつかの方法を試しましたサイト、キャッシュのクリア、statelesssession の使用の両方とも、言葉が通じませんでした。誰の体もそれを改善する方法を知っていますか.トンに感謝します.