подкачка на стороне сервера с фильтрацией бизнес-логики - PullRequest
2 голосов
/ 28 августа 2011

Мне нужно показать общее количество строк в заголовке сетки.Сетка должна иметь дело также с большим количеством записей.поэтому я решил использовать функцию подкачки сетки.я знаю, как выполнять пейджинг на стороне сервера с sql2005 ROW_NUMBER и т. д., но моя проблема заключается в сложной фильтрации базы строк, выполняемой на уровне бизнес-логики.я думаю, что выполнение первой сложной фильтрации (чтобы узнать количество элементов) для большого количества записей будет неэффективным и, возможно, может вызвать исключение нехватки памяти.

сейчас этот проект (asp.net)веб-приложение) находится на производстве с .net framework1.1, sql2005.следующая версия на производстве будет с .net framework4.0.после этого мы перейдем на sql2008.

, пожалуйста, помогите мне найти решение этой проблемы?спасибо.

Ответы [ 2 ]

0 голосов
/ 28 августа 2011

, если вы используете .net 4.0, IQueryable является жизнеспособным вариантом.Смотрите здесь для деталей.По сути, IQueryable задерживает выполнение запроса, поэтому вы можете применить бизнес-логику и затем извлечь релевантные данные из базового хранилища данных (в вашем случае sql-сервер).Но перед тем, как пойти по этому пути, я бы сделал несколько микро-тестов производительности запросов.

0 голосов
/ 28 августа 2011

Я бы сказал, что если вы боитесь исключений "Недостаточно памяти" в рабочей среде, либо размер HW недостаточно велик для объема данных, который у вас есть, или ваш код действительно сильно ошибаетсяпроцедура хранения, включая фильтрацию, разбиение на страницы и сортировку.После того, как вы разберетесь с этим на сервере и укажете размер страницы и индекс pag, которые вам нужно получить, хранимый процесс просто возвращает единственную страницу записей, которые вы уже отсортировали, и вы можете связать это с вашим пользовательским интерфейсом.контроли.

Это то, что вы хотели или я вас неправильно понял?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...