Рекомендации по отображению отчетов

#database #postgresql #reporting #report

#База данных #postgresql #отчетность #Сообщить

Вопрос:

В настоящее время у меня есть клиент-серверное приложение. Клиент должен иметь возможность генерировать отчеты. Эти отчеты могут содержать миллионы записей. Каков наилучший способ передачи данных клиенту? Отправка всех миллионов записей одновременно не очень эффективна. Допустим, я просто хочу отображать 20 одновременно и просматривать все результаты. Должен ли я, чтобы сервер выполнял запрос каждый раз, когда пользователь нажимает на следующую страницу, или я должен заставить сервер получать весь набор результатов, а затем отправлять его части клиенту?

Комментарии:

1. Ознакомьтесь с разделением на страницы

2. Достаточно справедливо. Каков наилучший способ передать весь отчет (миллионы записей) из базы данных клиенту без проблем с памятью? Транслировать его? Эта опция необходима, если пользователь хочет загрузить весь отчет в файл.

3. Пусть сервер получает 20 результатов одновременно.

Ответ №1:

Используйте курсор — он идеально подходит для этих целей.

Примечание — отчет с миллионом строк не является хорошо разработанным отчетом. Никто не может это обработать. Но это вопрос к аналитику.

http://www.commandprompt.com/ppbook/x15040

Ответ №2:

Я использовал Limit в sql-запросе, чтобы задать диапазон извлекаемых записей. но запрос должен исходить от клиента, и запрос должен передавать диапазон.

Это зависит от сценариев, если вы используете соединитель Dotnet npgsql

  • Я бы сгенерировал номер страницы в поле со списком в форме
  • Затем умножьте номер страницы на строки *(число страниц-1) (20 * 1 для страницы 2), чтобы получить начальное число строк
  • Передайте его в форме sql в базу данных
  • Извлекать строки и отображать в datagridview

Хотя, я мог бы просто добавить, поиск по миллиону записей Page_by_page не является мудростью. я надеюсь, что есть несколько фильтров, чтобы сузить поиск до нескольких страниц. Поскольку исследования показывают, что просмотры за пределами страницы 10 падают экспоненциально.