0

我们基于 SQL Server 创建了几个水晶报表——通常是 2005 或 2008。大致有 2 种报表

a) 表格报告 - 在表格中显示一些数据(例如,发票列表) b) 文档布局 - 以特定格式显示数据 - 通常来自一个或两个主表 - 和几个辅助表(例如,发票)

我们有时会直接在水晶中使用表格。或者在 SQL 中创建一个过程,然后使用该过程。一张发票通常可以参考大约 10-12 张桌子。其中大多数使用左外连接链接到主发票表。

什么选项更好 - 在水晶中使用表(并让水晶创建并运行 sql 查询) - 或创建查询 - 而不是在水晶中使用该查询。哪一个会提供更好的性能?

4

3 回答 3

1

由“数据库专家”生成的查询与添加到命令的相同 SQL 之间的性能没有差异。一个警告:确保可以解析记录选择公式并将其发送到数据库(应用的过滤器肯定会比WhileReadingRecords纯 SQL 的效率低)。

喜欢“数据库专家”的原因:

  • 在 v 2008 之前,Command 对象不支持多值参数
  • 更容易管理(有点主观)

喜欢命令的原因:

  • 你可以添加提示
  • 您对 SQL 有更细粒度的控制(例如,内联视图、CTE、更复杂的 JOIN、子选择)

就个人而言,我尽量避免使用存储过程,因为它们提供的性能优势最小,但需要在开发和维护方面进行更有意义的投资。

最后,没有什么可以替代性能。尝试两种方式查询并衡量结果。

于 2012-11-05T18:08:36.027 回答
0

自己编写代码几乎总是会运行得更快——毕竟,你知道你的数据是什么样的,而 Crystal 不知道。此外,您可以在手动查询(例如,窗口函数)中执行 Crystal 无法执行的操作。

于 2012-11-03T19:23:44.763 回答
0

水晶倾向于在幕后做一些疯狂的事情。您可以查看“数据库”菜单选项下的“显示 SQL 查询”以查看它创建的内容。如果发现用 SQL 编写查询更容易,因为我可以更轻松地自己优化它。我也更喜欢在 SQL 中执行任何计算/公式字段,并将 Crystal 用作显示界面。如果您确实将逻辑放入水晶中,请记住它正在为返回的每条记录运行该逻辑......因此,如果存在从公式中排除记录的条件,请将其放在首位以限制计算所花费的时间。

于 2012-11-05T16:37:52.320 回答