Crystal Reports--非常大的数据库,处理时间非常长

时间:2009-05-06 17:27:21

标签: crystal-reports

我真的不知道如何处理。 我有一个非常大的数据库,我正在访问的表有大约。 600,000条记录。使用记帐应用程序访问此数据库,该应用程序为报告提供此报告访问数据库的SQL查询。

我的报告有一个链接的子报表,其中包含放置在报表标题中的限制。运行此报告时,使用基本查询刷新的平均时间为36分钟。向查询中再添加两个项目时,报告需要2.5小时。

这是我尝试过的:

  • 清理报告只留下绝对必要的项目 - 没有区别
  • 删除了大多数公式(删除剩余的公式没有时间差异)
  • 尝试编辑SQL查询 - 由于会计应用程序而不允许
  • 尝试翻转子报告和主报告 - 无法正常工作
  • 添加了其他分组 - 没有区别
  • 删除分组 - 没有区别
  • 检查所有服务器是否缺少临时光盘空间 - 没问题
  • 尝试“按需”子报告 - 无变化
  • 检查参数(离散与范围),它应该是
  • 尝试了爆发索引,在服务器上分组等 - 没有区别
  • 报告需要2次通过。我试过把它降到一次传球失败。

必须有一些我缺少的东西。

使用常规晶体功能似乎没有对报告进行任何其他修改。有没有办法加快数据的访问速度,而无需通过所有600,000条记录?访问此数据的SQL查询很长并且有很多请求。这不是我可以改变的。

我可以添加一些(公式?)来取消这些请求吗?我现在到达了......

4 个答案:

答案 0 :(得分:1)

我们取得成功的一些事情是向数据库添加索引,而不是将表导入报表,而是编写了一个存储过程来检索所需的结果。

答案 1 :(得分:1)

如果索引和存储过程没有得到你需要的位置,那么你已经达到了反规范,直到它与数据库一起工作。您可能希望创建一个MI数据库,其中包含针对您的报告需求而优化的表;以及一些可以将数据从生产中提取到MI数据库的数据转换脚本。取决于它是什么oracle / ms有工具来帮助你这样做。

答案 2 :(得分:1)

我们将Crystal Reports与计费系统一起使用,我们在数据库中查询需要1.5小时才能完成。这甚至没有考虑报告的呈现/格式化。

我们创建了Materialized Views并强制客户端每天刷新它们。物化视图基本上是一个包含返回数据集的数据库视图。除非您明确告诉数据集刷新,否则不会刷新数据集。

答案 3 :(得分:0)

你知道SQL查询是什么吗?如果是这样,您可以将报表移到会计应用程序之外,并将查询直接粘贴到数据库专家的Command中。在我使用的另一个应用程序中,我必须在几个案例中执行此操作。