Sql server 2008 SQL中where语句相对于数据集上的筛选器的性能

Sql server 2008 SQL中where语句相对于数据集上的筛选器的性能,sql-server-2008,ssrs-2008,reporting-services,Sql Server 2008,Ssrs 2008,Reporting Services,如果我没有彻底搜查,请鞭打我 我想知道什么对性能更有利: 使用SQL收集、聚合和排序我的数据(数据集中的WHERE、Group by、Order by语句) 或 只需收集“裸体”数据并在报告中分组、排序和过滤即可。(对报告中的数据集、参数和聚合进行筛选) 使用存储过程是否有利于性能 您好 Henro好吧,SSRS是一种显示结果的工具,它为此进行了优化,尽管它可以执行聚合、筛选和其他很多事情,但这并不意味着这是他的主要目标,因此它没有优化到这样做。当您在数据集上执行聚合、筛选和数据操作时,您使用的

如果我没有彻底搜查,请鞭打我

我想知道什么对性能更有利:

使用SQL收集、聚合和排序我的数据(数据集中的WHERE、Group by、Order by语句) 或 只需收集“裸体”数据并在报告中分组、排序和过滤即可。(对报告中的数据集、参数和聚合进行筛选)

使用存储过程是否有利于性能

您好


Henro

好吧,SSRS是一种显示结果的工具,它为此进行了优化,尽管它可以执行聚合、筛选和其他很多事情,但这并不意味着这是他的主要目标,因此它没有优化到这样做。当您在数据集上执行聚合、筛选和数据操作时,您使用的是数据库引擎,它为此进行了优化,因此您很可能通过这种方式获得更好的性能。至于存储过程或纯SQL,两者都没有固有的性能优势(我更喜欢纯SQL,只是因为它给了我更多的灵活性)。

就性能而言,SQL Server针对这类事情进行了优化


在某些情况下,存储过程在预编译查询计划时可以显著提高性能。。。在这种情况下,除非报告经常被调用,否则我不知道您是否会注意到差异。不过,我还是不想让SQL出现在报表中。

当我需要数据集来填充例如参数时,我会选择1。创建一个新的数据集,该数据集链接到该共享数据集,但不包含2。删除了不适当的字段。这样,我可以确保所有报告都使用相同的数据集,但在创建具有不同分组的报告时会有很大的灵活性。不幸的是,经验告诉我们,如果我们使用分组、排序和过滤的嵌入式数据集,并且需要进行更改,那么我们必须检查所有数据集,并确保更改反映在所有地方。除了繁琐之外,它还很容易出错。但我从您的回答中了解到,这将对性能产生影响。当你需要同一组数据的不同报告时,你会怎么做?@Henrov-你问过每种方法的性能。现在,和往常一样,如果你想获得灵活性,你必须用其他东西来支付,在这种情况下就是性能。最佳性能的灵活性较低,而最灵活的性能会对性能产生影响。至于我会选择哪一个,这取决于报告是否需要真正快速,仅此而已。