SQL Server 中的常量函数(使用函数的慢视图)
Posted
技术标签:
【中文标题】SQL Server 中的常量函数(使用函数的慢视图)【英文标题】:Constant Function in SQL Server (slow view that uses a function) 【发布时间】:2010-04-12 11:35:11 【问题描述】:我编写了一个视图,如果它的连接条件依赖于标量函数值。 查询计划保守地期望函数结果可能会在函数恒定时(至少对于每个完整查询)在执行之间发生变化。结果一天左右变化一次。
由于行数巨大,查询计划效率低下。我需要一种让 SQL Server 知道该值不会改变的方法。由于您无法在视图中声明变量,因此我不确定如何解决该问题。也许查询提示或其他构造会起作用?
我们尝试编写一个表值函数,但似乎没有太大帮助。 这不是一个理想的解决方案,因为我宁愿使用普通视图。
谢谢 问候 克雷格。
【问题讨论】:
你能告诉我们有问题的功能吗? 【参考方案1】:也许您应该考虑将“常量”放入一个单列表中,该列表会使用scheduled stored procedure 定期更新。如果您在表列上定义了主键,那么查询计划应该可以正常工作。
【讨论】:
这就是我们似乎正在采取的方向。我创建了一个表来包含每天生成的值。它不是特别优雅,但它解决了速度问题。 缺乏优雅通常是您为非规范化付出的代价。也许 MS SQL 开发团队有一天会用更优雅的解决方案启发我们。 :-)以上是关于SQL Server 中的常量函数(使用函数的慢视图)的主要内容,如果未能解决你的问题,请参考以下文章