Where子句的不同值会减慢查询速度

时间:2015-06-23 13:51:12

标签: sql sql-server tsql

我有一个查询从视图中提取数据,该视图已经非常大(> 10.000.000行)。我知道,做到这一点很愚蠢,但坚定了我的决定。

查询已经很慢了。但是,如果我更改Where条件的值,查询运行的时间很长,或者看起来它永远不会完成。有没有人解释这个问题?对我来说,似乎sql server已经优化了这个条件参数的查询,其他的需要永远。

1 个答案:

答案 0 :(得分:4)

是的,这很正常。不同的查询具有不同的最优计划,如果您正确传递参数,则相同的执行计划将用于所有不同的参数。

除了重新设计数据库之外,您可以尝试使用option(recompile)。请注意,这有其自身的问题 - 例如增加内存消耗,延迟......

尝试找出为什么存在问题 - 查看两个查询的实际执行计划通常是个好主意。