在SQL Server中的常数函数(使用函数的慢视图)

4

我编写了一个视图,它依赖于标量函数值作为其连接条件之一。

查询计划保守地预期函数结果在执行之间可能会更改,而函数是恒定的(至少对于每个完整的查询)。结果每天或更改一次。

由于行数巨大,查询计划效率低下。我需要让SQL Server知道该值不会更改。由于您不能在视图中声明变量,因此我不确定如何解决问题。也许查询提示或其他构造可以解决?

我们尝试编写表值函数,但似乎没有显著帮助。这不是理想的解决方案,因为我更愿意使用普通视图。

谢谢 问候 Craig。


2
你能展示一下相关的函数吗? - Lasse V. Karlsen
1个回答

2

也许你应该考虑将“常量”放入单列表中,使用定期存储过程进行定期更新。如果在表列上定义了主键,则查询计划应该会很好地工作。


这似乎是我们正在采取的方向。我已经创建了一个表来包含每天产生的值。虽然不是特别优雅,但它解决了速度问题。 - Jim
缺乏优雅往往是反规范化的代价。也许微软SQL开发团队总有一天会为我们带来更加优雅的解决方案。 :-) - Prutswonder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接