Sql server 如何在存储过程中提高SQL Server查询性能?

Sql server 如何在存储过程中提高SQL Server查询性能?,sql-server,tsql,query-performance,Sql Server,Tsql,Query Performance,我有一个很大的表,想知道是否有可能提高查询的性能 运行一个简单的查询需要几分钟。见以下执行计划: 我正在使用Microsoft SQL Server 2016,我有以下存储过程: 如何提高上述过程的性能 这是我的执行计划: 有没有办法提高select性能?我想添加选项(重新编译): 我将使用此子句每次为动态SQL生成执行计划和/或基数估计(这是某种报告,因此我假设开销不应该太高) 用分号结束每条语句是一种很好的做法。我现在没有时间给出完整的答案,但将表变量改为临时表。您提到的大表是不是?有几

我有一个很大的表,想知道是否有可能提高查询的性能

运行一个简单的查询需要几分钟。见以下执行计划:

我正在使用Microsoft SQL Server 2016,我有以下存储过程:

如何提高上述过程的性能

这是我的执行计划:

有没有办法提高select性能?

我想添加
选项(重新编译)

我将使用此子句每次为动态SQL生成执行计划和/或基数估计(这是某种报告,因此我假设开销不应该太高)


用分号结束每条语句是一种很好的做法。

我现在没有时间给出完整的答案,但将表变量改为临时表。您提到的大表是不是?有几排?您可以尝试使用columnstore,或者使用表格模型来最大限度地提高大型聚合的性能。大约500000行感谢您的帮助,我在sql方面很弱。您能给我一些提示吗。。。请。请查看在您的问题中包含执行计划的更好方法。您应该解释为什么您认为这会有所帮助。(例如,改进表变量的基数估计)而不是将其作为一个神秘的咒语。我添加了选项(重新编译),但速度很慢。
SET @SQL = @Pre + @Select + @SQL + @GroupBy
=>
SET @SQL = @Pre + @Select + @SQL + @GroupBy + ' OPTION(RECOMPILE)';