Ao utilizar várias fontes de dados com Join's, fica a cargo do ReportBuilder fazer o filtro com estes join's.
Exemplificando:
Temos duas fontes de dados A e B. Estas fontes de dados fazem join entre si com um campo qualquer. O que é feito: o ReportBuilder faz a consulta no banco, traz todos os registros de cada fonte de dados e só depois que o join entre as fontes de dados será feito.
Isso sobrecarrega o Gerador de relatórios, pois fica a cargo do mesmo fazer o procedimento que o SGBD faria melhor.
Para resolver este problema, deve-se utilizar o mínimo de fonte de dados possível.
Veja as imagens abaixo:
Várias fontes de dados:
Uma fonte de dados:
Um outro ponto que pode otimizar as consultas no ReportBuilder é a utilização de agrupamentos ao invés de subrelatórios. A utilização de subrelatórios muitas vezes força o usuário a ter várias fontes de dados, aí tem-se o problema citado acima. Veja a imagem abaixo, note que no exemplo, utiliza-se vários subrelatórios para agrupar os registros:
Uma solução para este problema é a utilização de agrupamentos do próprio ReportBuilder. Veja a imagem abaixo, note que no lugar dos subrelatórios, utilizou-se agrupamentos:
Feito os procedimentos citados acima, em muitos casos o ganho em performance é bastante significativo.
Observação: Há outros fatores que podem influenciar no momento da geração dos relatórios: memória física disponível, quantidade de registros consultados e capacidade de processamento da CPU por exemplo podem atrasar na geração dos mesmos
Caso este tópico não tenha comentário satisfatório, envie e-mail para documentacao@softwell.com.br