Подотчеты фильтрации с низкой производительностью в SSRS на стороне клиента 2008 - PullRequest
2 голосов
/ 18 апреля 2011

Я пытаюсь перевести существующий отчет Access в отчет SSRS 2008 на стороне клиента и испытываю ужасную производительность при фильтрации.

В качестве фона я упросту цель отчета. Это упрощенный вид модели:

Orgainzation
     |
   Person
     |
 Credential

В организациях есть люди, а у людей есть полномочия. В отчете перечислены люди, сгруппированные по организациям, и два столбца, в которых указан человек, представляют собой разделенные запятыми списки учетных данных, которые они имеют в организации (они, конечно, хранятся в нормализованном виде, но я объединяю их в процедуре который извлекает список, используя обычный FOR XML PATH трюк). При этом отчет работает нормально и работает приемлемо. Проблема заключается в том, что в существующем отчете содержится сводка по каждому типу учетных данных, представленному в списке, а также общее количество.

Поскольку два составных списка различаются, я не могу получить внешние результаты по отдельности и просто сгруппировать их. Вместо этого мне нужно выполнить второй поиск, чтобы собрать все отдельные типы учетных данных по организации. Это не проблема, и SQL работает быстро, но отчет - это другая история.

Для тех, кто ведет счет дома, набор результатов для человека составляет примерно 10000 строк, скажем, в 500 группах. Сводный результирующий набор на уровне организации, вероятно, состоит из 1500-2000 строк в 500 группах (это, в основном, 3-4 различных типа учетных данных на организацию)

Основной отчет выложен в виде таблицы, а в нижнем колонтитуле группы мне пришлось разместить подотчет, который обрабатывает сводные данные уровня организации для учетных данных. В подотчете я добавил фильтр строк, который фильтрует организацию, используя параметр отчета. Элемент подотчета в нижнем колонтитуле группы берет сгруппированную организацию и передает ее в подотчет. Это функционал , но его производительность не приемлема. Рендеринг отчета о тестировании для подмножества данных (только 200 внешних строк) занял почти 30 минут. Попытка запустить весь набор результатов вызвала OutOfMemoryException примерно через час, и приложение использовало ~ 900 МБ памяти.

Учитывая, что основной отчет без вложенный отчет выполняется быстро, я предполагаю, что это связано либо с вложенными отчетами, фильтрацией, либо с обоими.

Итак, вот мой вопрос:

Есть ли способ улучшить производительность фильтров строк в подотчете?

1 Ответ

0 голосов
/ 26 марта 2012

Учитывая отсутствие ответа на этот вопрос, я собираюсь предположить, что ничего нельзя сделать, чтобы улучшить производительность фильтрации в клиентских отчетах.

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