我应该在具有多个可选参数的查询中使用OPTION(RECOMPILE)

时间:2015-08-03 11:16:17

标签: sql-server

我在SSRS报告中使用了一个查询,其中包含20多个可选过滤器。这些过滤器在我的查询中生成了一堆@PARAMETER IS NULL或COLUMN = @PARAMETER,这被认为是性能问题的原因。

我听说OPTION(RECOMPILE)会导致SQL Server在生成执行计划之前分析这个条件,所以我的问题是:这对于这种查询是不是一个好的选择?

1 个答案:

答案 0 :(得分:1)

此模式的问题在于它会阻止索引使用。针对正在使用的确切参数值重新编译专门的查询。这恢复了索引的使用。

如果查询运行时间远远大于编译时间,那么重新编译很多就没有问题。在这种情况下,成本微不足道。对于手动执行的报告,50ms的编译时间应该不是问题。这是一个很好的用例。