首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >存储过程中多个结果集的SSRS最佳实践

存储过程中多个结果集的SSRS最佳实践
EN

Stack Overflow用户
提问于 2014-07-08 14:17:20
回答 1查看 8K关注 0票数 2

我正在使用SSRS 2008,并希望就处理多个结果集的最佳实践提供一些建议。

我有一个存储过程,它返回4组相关数据,但是每个结果集都有不同数量的返回记录。当然,在SSRS中,只有第一个结果集被处理,因此我只剩下两个选项,据我所知:

  1. 创建返回4个不同数据集的4个不同的存储过程
  2. 将所有4个结果集插入临时表并从该表返回结果。

第一个选项的问题是,这4个结果都来自相同的基本数据(放入一个临时表),然后与其他表/数据连接/分组。因此,将它们分割成单独的存储过程似乎会给DB带来比单个sproc更大的压力。

第二种方法的问题是,我必须将相同的数据集放入SSRS 4次,每次提取不同的结果集,并过滤掉正确列上的空值。

例如,假设我有4个结果集,分别返回4列和4条记录。前4列和前4条记录与第一个结果集相关(其余列为null)。第二个结果集只填充列5-8和记录5-8等。

问题是,哪一种方法更有效?在SSRS中多次使用多个存储过程还是一个存储过程?谢谢!

EN

回答 1

Stack Overflow用户

发布于 2014-07-08 22:58:55

听起来数据检索是比较昂贵的操作,所以您可能只想做一次。(虽然我不确定您是否会“强调”SQL Server,如果这是数据源:基本数据和连接/分组数据可能在内存中,因此如果不同的存储过程重新读取数据,则可能不会发生额外的物理读取。)

考虑一个包含多个实体INCLUDEd的实体框架LINQ查询:结果集的形状非常宽,每个实体的每个字段都有一列。但这避免了对每个包含实体的数据库的访问。

除非您的报告有数百页,或者正在呈现--或处理密集型--否则,我认为选项2可能更有效。

您能够查看SSRS执行日志中的执行统计信息吗?我总是使用ExecutionLog3视图,并检查TimeDataRetrieval、TimeProcessing和TimeRendering的时间。

编辑

我知道只包括链接是皱眉在这里,但我不想包括可能有版权的东西,我没有创建。

请参阅部分,查看发送到数据库(此处http://www.asp.net/web-forms/tutorials/continuing-with-ef/maximizing-performance-with-the-entity-framework-in-an-asp-net-web-application )的查询,以获得类似于http://www.asp.net/web-forms/tutorials/continuing-with-ef/maximizing-performance-with-the-entity-framework-in-an-asp-net-web-application的LINQ查询示例。注意,特别是Text的图片,它显示了所构造的查询:它类似于选项2,因为多个实体包含在相同的结果集中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24634175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档