【问题标题】:Constant Function in SQL Server (slow view that uses a function)SQL Server 中的常量函数(使用函数的慢视图)
【发布时间】:2010-04-12 11:35:11
【问题描述】:

我编写了一个视图,如果它的连接条件依赖于标量函数值。 查询计划保守地期望函数结果可能会在函数恒定时(至少对于每个完整查询)在执行之间发生变化。结果一天左右变化一次。

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

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

谢谢 问候 克雷格。

【问题讨论】:

  • 你能告诉我们有问题的功能吗?

标签: sql-server view


【解决方案1】:

也许您应该考虑将“常量”放入一个单列表中,该列表会使用scheduled stored procedure 定期更新。如果您在表列上定义了主键,那么查询计划应该可以正常工作。

【讨论】:

  • 这就是我们似乎正在采取的方向。我创建了一个表来包含每天生成的值。它不是特别优雅,但它解决了速度问题。
  • 缺乏优雅通常是您为非规范化付出的代价。也许 MS SQL 开发团队有一天会用更优雅的解决方案启发我们。 :-)
猜你喜欢
  • 2012-11-20
  • 2012-06-10
  • 1970-01-01
  • 1970-01-01
  • 2014-06-02
  • 2015-11-09
  • 1970-01-01
  • 1970-01-01
  • 2010-10-22
相关资源
最近更新 更多