首页 > 解决方案 > 如何提高存储过程中的 SQL Server 查询性能?

问题描述

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

运行一个简单的查询需要几分钟。请参阅下面的执行计划: https ://files.fm/down.php?cf&i=pxgp25tr&n=ep.sqlplan

我正在使用 Microsoft SQL Server 2016,并且我有这个存储过程:

如何提高上述过程的性能?

这是我的执行计划:

https://www.brentozar.com/pastetheplan/?id=r1m43JclQ

有没有办法提高选择性能?

标签: sql-servertsqlquery-performance

解决方案


我要补充OPTION(RECOMPILE)

SET @SQL = @Pre + @Select + @SQL + @GroupBy
=>
SET @SQL = @Pre + @Select + @SQL + @GroupBy + ' OPTION(RECOMPILE)';

我每次都会使用这个子句为动态 SQL 生成执行计划和/或基数估计(这是某种报告,所以我假设开销不应该太高)。更多信息:选项(重新编译)总是更快;为什么?

用分号结束每条语句是一个好习惯。


推荐阅读