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];
同樣的查詢當它分頁大數據時(ex.all行數1000000行)得到結果快,但是小數據(例如所有行數5行)慢。nhibernate返回結果大小導致性能差異爲什麼?
但我使用sql profiler來跟蹤查詢,並複製查詢執行它在msms它獲得數據非常快速使用50ms,但使用nhibernate列出數據時,小數據成本10s甚至計時,我已經嘗試一些方法,在網站發佈,清除緩存並使用無狀態會話都沒有得到單詞。任何人都可以知道如何改善它。謝謝。
當您獲得所有行時,您使用的代碼是什麼? – Baz1nga