Наша таблица, из которой мы извлекаем данные, имеет 10 столбцов. При переносе наших данных в приложение мы добавили 3 дополнительных столбца, которые являются вычисляемыми полями
т.е.
Код: Выделить всё
SELECT SUM(tableX.Cost) FROM tableX WHERE tableX.ID = this_.ID
В нашем запросе мы должны предоставить возможность упорядочивать столбцы, но я заметил, что когда я пытаюсь упорядочить вычисляемые поля, это занимает значительное количество времени по сравнению с тем, когда я ЗАКАЗЫВАЮ ПО существующему столбцу в таблице. Это имеет смысл, поскольку это занимает больше времени, но когда загрузка всего 1000 записей занимает пару минут, а нужно просмотреть более 500 страниц. Тогда я чувствую, что это делает пейджинг бессмысленным.
Я немного подумал о возможности создания кэша 2-го уровня с помощью nhibernate, но из того, что я прочитал до сих пор, я Не уверен, что решит эту проблему.
Кстати, одна из карт:
Код: Выделить всё
Map(x => x.Cost)
.Formula(@"(SELECT SUM(_Claims.Cost) FROM _Claims WHERE _Claims.ID = this_.ID")
.Nullable();
Код: Выделить всё
var list = CurrentSession()
.SetFirstRsult(startPos)
.SetMaxResults(1000)
.SetTimeout(100)
.Add(Restrictions.Eq("ClientID", _clientID));
if(isASC)
{
list.AddOrder(Order.Asc(Projetions.Property(_propertyString)));
}
else
{
list.AddOrder(Order.Desc(Projetions.Property(_propertyString)));
}
return list.List();
Спасибо
Подробнее здесь: https://stackoverflow.com/questions/991 ... ith-paging