我真的不知道如何处理。 我有一个非常大的数据库,我正在访问的表有大约。 600,000条记录。使用记帐应用程序访问此数据库,该应用程序为报告提供此报告访问数据库的SQL查询。
我的报告有一个链接的子报表,其中包含放置在报表标题中的限制。运行此报告时,使用基本查询刷新的平均时间为36分钟。向查询中再添加两个项目时,报告需要2.5小时。
这是我尝试过的:
必须有一些我缺少的东西。
使用常规晶体功能似乎没有对报告进行任何其他修改。有没有办法加快数据的访问速度,而无需通过所有600,000条记录?访问此数据的SQL查询很长并且有很多请求。这不是我可以改变的。
我可以添加一些(公式?)来取消这些请求吗?我现在到达了......
答案 0 :(得分:1)
我们取得成功的一些事情是向数据库添加索引,而不是将表导入报表,而是编写了一个存储过程来检索所需的结果。
答案 1 :(得分:1)
如果索引和存储过程没有得到你需要的位置,那么你已经达到了反规范,直到它与数据库一起工作。您可能希望创建一个MI数据库,其中包含针对您的报告需求而优化的表;以及一些可以将数据从生产中提取到MI数据库的数据转换脚本。取决于它是什么oracle / ms有工具来帮助你这样做。
答案 2 :(得分:1)
我们将Crystal Reports与计费系统一起使用,我们在数据库中查询需要1.5小时才能完成。这甚至没有考虑报告的呈现/格式化。
我们创建了Materialized Views并强制客户端每天刷新它们。物化视图基本上是一个包含返回数据集的数据库视图。除非您明确告诉数据集刷新,否则不会刷新数据集。
答案 3 :(得分:0)
你知道SQL查询是什么吗?如果是这样,您可以将报表移到会计应用程序之外,并将查询直接粘贴到数据库专家的Command中。在我使用的另一个应用程序中,我必须在几个案例中执行此操作。