怎么样优化Web报表?

怎么样优化Web报表?

有关如何创建快速交互式报表的提示和注意事项,请参阅作出正确的设计选择。
有关充分使用现有数据库方面的信息,请参阅优化您的制表环境。
若要减少数据传输量和增强报表的性能,请参阅使用增强的记录选定公式。
若要缩短分组、排序、或总计报表的处理和数据传输时间,请参阅改进分组、排序和总计。

一般情况下,无论以何种方式分发报表,您都会遇到类似的性能问题。按照以下这些策略操作,您会发现不仅在多用户 Web 环境下性能显著提高,在单用户情形下性能也会显著提高。
------------------------------------------------
作出正确的设计选择
本节提供有助于提高报表性能的设计选择和考虑。本主题涵盖了从基本的建议,如将旧报表更新为最新的文件格式,到较复杂的决策,如是使用活动数据还是使用已保存数据以及如何有效地使用子报表。

在设计报表,尤其是设计用于 Web 的报表时,应该允许报表用户操纵其所查看的数据。即,显示汇总信息,以便每个用户可以快速地浏览报表,然后深化以访问其他数据。采用此方法,由于仅从数据库服务器传输用户所请求的数据,所以最大限度地降低了 Web 流量并缩短了响应时间。

下面只是设计用户驱动报表的几点优势:

报表用户可以对其在 Web 上查看的信息类型和数量进行交互控制。
因为只从数据库服务器返回用户所请求的信息,所以数据传输和网络流量减少。
当用户需要通过 Web 根据实时数据制作报表时,面向用户的报表响应迅速,并能有效地与数据库服务器通讯。
报表变得更有用,原因在于每个用户均可自定义报表的内容,从而创建针对其特定决策问题的报表解决方案。
本节包含四个主题:

使用更快的报表格式
在活动数据和已保存数据之间选择
设计汇总报表
慎用子报表
------------------------------------------------
优化您的制表环境
另一个确保报表用户能迅速收到信息的步骤是评估制表环境。您使用的是哪种类型的数据库?数据库内的数据如何组织?如何连接到需要将其制成报表的数据?如何链接到数据库表?通过考虑这些重要因素,您可以显著降低实际必须通过网络传输的数据量。

本节包含五个主题:

选择最快的数据库和连接
使用表索引
改进表链接选择
使用线程安全数据库驱动程序
使用存储过程进行更快的处理
------------------------------------------------
使用增强的记录选定公式
提高报表处理速度最为重要的做法是限制从数据库返回的数据量。实现这种做法的主要工具是记录选定公式。

Crystal Reports 分析记录选定公式并从中生成 SQL 查询。然后,数据库处理该 SQL 查询,将得到的记录发送回 Crystal Reports。Crystal Reports 然后在本地为从数据库检索到的每个记录对记录选定公式进行求值,从而计算出用于生成报表的记录集。

不必要的记录可在以下两个阶段中去除:通过 SQL 查询在数据库上以及通过记录选定公式在 Crystal Reports 中。为了提高速度,可能需要在第一阶段尽可能多地消除记录。通过有效地设计记录选定公式,可以将很大一部分处理工作推给数据库服务器来完成,这样在向 Crystal Reports 返回记录之前,数据库已经消除了不必要的记录。这通常称为“将记录选定下推到数据库服务器”。

有关将记录选定下推到数据库服务器将如何提高性能的简短演示,请参阅下推记录选定 - 示例。

本节提供几点确保可将记录选定公式下推到数据库服务器的提示:

记录选定性能提示
编写高效记录选定公式的策略
将参数字段合并到记录选定公式中
适时使用 SQL 表达式
------------------------------------------------
改进分组、排序和总计
在服务器上执行分组
当通过 Web 从活动数据中进行实时制表时,使用选项“在服务器上执行分组”可减少从数据库服务器传输的数据量。使用此选项后,大部分数据处理工作都卸载到数据库服务器,并且开始时仅读入一个数据子集。仅当您在报表中进行深化时才从数据库返回详细数据。

注意: 服务器端处理仅适用于那些基于 SQL 数据源的经过排序和分组的报表。

启用服务器端处理
在“文件”菜单中,单击“报表选项”命令。
选择“报表选项”对话框中的“在服务器上执行分组”。
如果没有选择“为提高速度而使用索引或服务器”,则该复选框是不活动的。

提示: 当选中“为提高速度而使用索引或服务器”后,您可以迅速从“数据库”菜单启用“在服务器上执行分组”。

单击“确定”。
要了解在服务器上分组会如何影响性能,请转到在服务器上分组的好处 - 示例。

相关主题
将 SQL 表达式用于分组、排序和总计
将 SQL 表达式用于 Case 逻辑
在可能的位置插入汇总和运行总计字段