表值函数真的很奇怪的问题
Posted
技术标签:
【中文标题】表值函数真的很奇怪的问题【英文标题】:Really strange issue with Table Valued Function 【发布时间】:2010-11-04 19:45:33 【问题描述】:当我尝试调用特定的存储过程时,我的应用程序出现了一些超时。我将它隔离到一个特定的存储过程中,并发现当我在该存储过程中使用参数调用表值函数时,它需要永远运行。但是如果我传入一个特定的值(比如 804),它会很快返回。
如果我使用参数单独运行它,它运行良好,但是当我将它添加回带有参数的查询时,它会永远运行....然后用静态值替换参数并且它运行得很快?
我已采取的步骤:
-
已删除过程并重新创建。
在所有包含类似查询字符串的计划上运行
DBCC FREEPROCCACHE
。
只是一个测试数据库,所以我用昨晚的备份恢复了数据库。
还有一点需要注意。在同一台服务器上的另一个数据库上......大约相同数量的数据运行良好......非常奇怪。
我忽略了什么?我真的不明白。
【问题讨论】:
相关问题在这里:***.com/questions/866722/… 确保函数参数和SP参数的数据类型相同。还要检查两种情况下的执行计划。 @amit_g: 应该回答这个问题。这是一个有效的观点。 【参考方案1】:Parameter sniffing?
对不起,简短的回答,但值得阅读一些答案...
我以前也是
Stored Procedure failing on a specific user【讨论】:
我也链接到你回答的一个相关问题。 谢谢大家,我会看看...感谢您的反馈。 在我看来是关于其中一个基表的统计信息。再次感谢您的信息。以上是关于表值函数真的很奇怪的问题的主要内容,如果未能解决你的问题,请参考以下文章