【TechTarget中国原创】问:我们需要在SQL Server 2005数据库报告。包含报告资料数据的有六个表,但是这些表里已经包括了5-700万行数据了。我们一直都需要使用这些表,正努力让性能也包括报告。有没有什么技巧能够帮我们提高性能呢?
答:很多种解决方案能够提高SQL Server报告性能。下面四种解决方案中,第一种和第二种是一般的解决方案,其余两种是有关SQL Server报告服务的解决方案。
1、创建一系列支持你们查询的索引。在OLTP系统中,我们需要更加仔细,因为更新行也需要更新所有的索引。因此,我们通常会试着在我们设置的索引数字之间保持平衡。但是由于这些是报表,所以非常需要创建索引支持你们的报表查询。,否则,性能就远远达不到要求。
2、创建一些“决策支持”表并且从大型表中选取数据来填充这些表。我通常看见报告同时处理大量的行数据,但是根据某个具体标准显示出来的只有少数几行高度总结的数据分组。在许多情况下,你能立刻进行查询(每天或者每周)并将结果存储在小的综合表中。你可以用你报表中那些小的报表,这样完成时间就更快了。如果你的报表使用的是聚合(aggregation),你就需要谨慎考虑这些技巧。
3、报表服务支持报告caching。Caching是怎么运行的呢?当你使用caching设置报告时(访问Report Properties并点击Execution),报告服务只执行一次查询。对于后来的报告请求,该报告用cached copy来提供。报告服务为每个唯一的参数组合创建了,所以一般第一个要运行该参数组合的人需要等待更长时间。将来的请求就会反馈得更快并且不用访问数据源。对于需要花长时间执行的报告查询来说,这已经节约了大量的时间。
4、同样,你也可以设置隐藏的报告并通过快照还原。你可以把它当成是预处理报告。快照也可以在几个小时前创建。这样快照就能创建报告。当你的报告不需要实际时间数据时,这种方法对于没有参数以及长执行时间的报告说来很合适。