Здравствуйте, Nikolay_P_I, Вы писали:
N_P>Поточно — не нравится привязка к framework, с которым с БД работаю (сейчас C# ADO.NET).
Поясни, пожалуйста, о какой привязке идет речь.
N_P>А таймауты расширять дело плохое. Или на большой запрос времени не хватит или посыпятся жалобы на то, что при отвале БД об ошибке программа сообщит только через полчаса.
Никто же не предлагает один таймаут на все случаи жизни, будь он большим или маленьким. Они для того и настраиваются, чтобы применять их разумно, по ситуации.
N_P>Вообще — я почему именно сюда, а не в .NET тему, такой вопрос написал? Я подумал, что дело это, чтение больших выборок, не редкое, те же grid для вывода больших данных есть аналогичная задача. И что есть уже наработанные и проверенные паттерны этой задачи решения.
Большая выборка в гриде — это совсем другой случай. Как правило, это свидетельство неумелого проектирования UI. Но для остальных случаев проверенный паттерн — это пейджинг, с разными способами и степенью его поддержки в СУБД и фреймворках.
N_P>В принципе, ответ в виде "общего решения нет, только БД и framework-ориентированные" тоже ответ.
Для меня все еще непонятна проблема, для которой ищется "общее решение". Если ты где-то услышал или прочитал мантру "долгие запросы это очень плохо, нужно их избегать или бить на части", то не нужно воспринимать ее как догму, а оценивать с умом по конкретной ситуации. Для интерактивной работы да, это плохо, так как важно время отклика, которое страдает от долгих запросов. А для пакетной обработки подход другой. Тут важна пропускная способность, а время отклика мало кого волнует.
W>>1. Обрабатывать на сервере (с помощью SQL или ХП). N_P>А как? Что по этому поводу почитать и где посмотреть пример?
Зависит от задачи и алгоритма. Если конечным результатом обработки миллиона строк является тысяча строк или сотня, то лучше сделать это на сервере, поближе к исходным данным, чтобы не тратить время на перекачку их по сети. Конечная выборка получится уже небольшая.
Почитать — документацию по СУБД, там и примеры есть. Ну и на книжку вон ссылку уже кинули.
W>>2. Обрабатывать на клиенте, не помещая все в память. N_P>В память вполне можно получить полный ID записей.