2020-09-07 03:28发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,
在一份报告中,我们有近18张桌子,并且正在缓慢加载并且应用程序停顿了。
我可以运行包含10个表和几个联接的报表。 但是,一旦我们达到11张或更多张桌子,报告就会停滞不前。 该报告还有一个子报告,可处理3个表。 主报告(共18个表)和子报告(共3个表)总计21个表。
我们可以在一个报告中添加多少张表?
谢谢=)
您好Nanci,
表的数量不取决于Crystal,而是取决于本地计算机和数据库服务器上的数据库和资源。 早在2000年代之前,SQL Server 6的限制为12个表。 自删除以来已久。 我以前在报告中有超过21张桌子。
取决于表的连接方式以及子报表在报表上的放置方式,将确定运行报表所需的资源。 如果子报表位于"详细信息"部分中,则将针对主报表中返回的每一行运行子报表。 与SQL语句中的subSelect相同。
取决于在Crystal中如何联接表,您的记录可能会缓存到本地计算机上,因此Crystal可以执行一些本地排序,格式化或筛选。
还取决于Crystal生成SQL的方式,它可能会占用数据库服务器上TEMPDB上的空间。
为最大程度地减少某些资源问题,请不要在Crystal中联接表,而是在数据库中创建视图或存储过程,然后使用该视图或存储过程来创建报表。 Crystal将尝试生成SQL,但可能未对其进行适当的优化,并且可能导致性能问题。
希望这会有所帮助,
Brian
影响报告速度的另一件事是您使用Select Expert的方式。 如果其中有任何Crystal公式或If语句,Crystal会将数据拉入内存并在那里进行过滤,而不是将过滤器推入数据库。
此外,如果您的任何表都在单独的数据库中 从其余表中读取数据,这也将导致Crystal将数据拉入内存并将其联接到那里而不是在数据库中。 在这种情况下,您需要在数据库之间建立数据库链接,在包含大部分表的数据库中创建视图,然后加入该视图而不是第二个数据库。
如果 无法创建和使用视图,您还可以使用命令(SQL Select语句)来获取报告的所有数据。 在这种情况下,您可以将过滤器构建到Command的where子句中,而不是使用Select Expert。 有关使用命令的更多信息,请参见 https://blogs.sap.com/2015/04/01/best-practices-when-using-commands-with-crystal-reports/
-Dell
最多设置5个标签!
您好Nanci,
表的数量不取决于Crystal,而是取决于本地计算机和数据库服务器上的数据库和资源。 早在2000年代之前,SQL Server 6的限制为12个表。 自删除以来已久。 我以前在报告中有超过21张桌子。
取决于表的连接方式以及子报表在报表上的放置方式,将确定运行报表所需的资源。 如果子报表位于"详细信息"部分中,则将针对主报表中返回的每一行运行子报表。 与SQL语句中的subSelect相同。
取决于在Crystal中如何联接表,您的记录可能会缓存到本地计算机上,因此Crystal可以执行一些本地排序,格式化或筛选。
还取决于Crystal生成SQL的方式,它可能会占用数据库服务器上TEMPDB上的空间。
为最大程度地减少某些资源问题,请不要在Crystal中联接表,而是在数据库中创建视图或存储过程,然后使用该视图或存储过程来创建报表。 Crystal将尝试生成SQL,但可能未对其进行适当的优化,并且可能导致性能问题。
希望这会有所帮助,
Brian
影响报告速度的另一件事是您使用Select Expert的方式。 如果其中有任何Crystal公式或If语句,Crystal会将数据拉入内存并在那里进行过滤,而不是将过滤器推入数据库。
此外,如果您的任何表都在单独的数据库中 从其余表中读取数据,这也将导致Crystal将数据拉入内存并将其联接到那里而不是在数据库中。 在这种情况下,您需要在数据库之间建立数据库链接,在包含大部分表的数据库中创建视图,然后加入该视图而不是第二个数据库。
如果 无法创建和使用视图,您还可以使用命令(SQL Select语句)来获取报告的所有数据。 在这种情况下,您可以将过滤器构建到Command的where子句中,而不是使用Select Expert。 有关使用命令的更多信息,请参见 https://blogs.sap.com/2015/04/01/best-practices-when-using-commands-with-crystal-reports/
-Dell
一周热门 更多>